第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我編寫(xiě)了一個(gè)Dll并且測(cè)試多線程,如下代碼:

我編寫(xiě)了一個(gè)Dll并且測(cè)試多線程,如下代碼:

API
郎朗坤 2022-07-13 15:11:16
UINT __cdecl NowThread (LPVOID lpParam){MessageBox(NULL,_T("開(kāi)啟新線程成功!"),_T("注入"),MB_OK);return 0;}// CGameDllApp 初始化BOOL CGameDllApp::InitInstance(){MessageBox(NULL,_T("DLL注入成功!"),_T("注入"),MB_OK); //僅這一句執(zhí)行了CWinThread* mythread = AfxBeginThread(NowThread,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL);MessageBox(NULL,_T("開(kāi)啟線程完成!"),_T("注入"),MB_OK);return CWinApp::InitInstance();}Dll加載后,僅執(zhí)行了第一個(gè)MessageBox,后面的兩個(gè)都沒(méi)有執(zhí)行說(shuō)明開(kāi)啟新線程不但失敗了,并且也沒(méi)有往下執(zhí)行
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

這樣解釋或許你更能明白:
創(chuàng)建線程會(huì)調(diào)用應(yīng)用程序已經(jīng)加載的所有DLL的DLLMain(參見(jiàn)DLLMain的文檔中關(guān)于reason參數(shù)的說(shuō)明),而DLLMain是不可以重入的,所以應(yīng)用程序會(huì)死鎖。
也就是:BOOL CGameDllApp::InitInstance()在你的DLL的DLLMain中被調(diào)用,而你此時(shí)又創(chuàng)建線程,就會(huì)再次想調(diào)用你的DLL的DLLMain,但是CGameDllApp::InitInstance()所在的DLLMain并未執(zhí)行完。所以就得等待完成,所以就AfxbeginThread等待自己完成操作,卡在這里了。

查看完整回答
反對(duì) 回復(fù) 2022-07-18
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

系統(tǒng)是順序調(diào)用D L L的D l l M a i n函數(shù)的。為了理解這樣做的意義,可以考慮下面這樣一個(gè)環(huán)境。假設(shè)一個(gè)進(jìn)程有兩個(gè)線程,線程A和線程B。該進(jìn)程還有一個(gè)D L L,稱(chēng)為S o m e D L L . d l l,它被映射到了它的地址空間中。兩個(gè)線程都準(zhǔn)備調(diào)用C r e a t e T h r e a d函數(shù),以便再創(chuàng)建兩個(gè)線程,即線程C和線程D。
當(dāng)線程A調(diào)用C r e a t e T h r e a d來(lái)創(chuàng)建線程C時(shí),系統(tǒng)調(diào)用帶D L L _ T H R E A D _ AT TA C H值的S o m e D L L . d l l的D l l M a i n函數(shù)。當(dāng)線程C執(zhí)行D l l M a i n函數(shù)中的代碼時(shí),線程B調(diào)用C r e a t e T h r e a d函數(shù)來(lái)創(chuàng)建線程D。這時(shí)系統(tǒng)必須再次調(diào)用帶有D L L _ T H R E A D _ AT TA C H值的D l l M a i n函數(shù),這次是讓線程D 執(zhí)行代碼。但是,系統(tǒng)是順序調(diào)用D l l M a i n函數(shù)的,因此系統(tǒng)會(huì)暫停線程D的運(yùn)行,直到線程C完成對(duì)D l l M a i
n函數(shù)中的代碼的處理并且返回為止。
當(dāng)線程C完成D l l M a i n的處理后,它就開(kāi)始執(zhí)行它的線程函數(shù)。這時(shí)系統(tǒng)喚醒線程D,讓它處理D l l M a i n中的代碼。當(dāng)它返回時(shí),線程D開(kāi)始處理它的線程函數(shù)。
AfxBeginThread的核心還是CreateThread函數(shù)。
所以請(qǐng)將AfxBeginThread函數(shù)從InitInstance里面拿出來(lái),在導(dǎo)出個(gè)其他函數(shù)進(jìn)行AfxBeginThread調(diào)用吧。


查看完整回答
反對(duì) 回復(fù) 2022-07-18
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)