您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++中的多線程是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++中的多線程是什么”吧!
在Windows平臺(tái),WindowsAPI提供了對(duì)多線程的支持。前面進(jìn)程和線程的概念中我們提到,一個(gè)程序至少有一個(gè)線程,這個(gè)線程稱為主線程(mainthread),如果我們不顯示地創(chuàng)建線程,那我們產(chǎn)的程序就是只有主線程的間線程程序。
CreateThread與CloseHandle
CreateThread用于創(chuàng)建一個(gè)線程,其函數(shù)原型如下:
HANDLEWINAPICreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,//線程安全相關(guān)的屬性,常置為NULL
SIZE_TdwStackSize,//新線程的初始化棧在大小,可設(shè)置為0
LPTHREAD_START_ROUTINElpStartAddress,//被線程執(zhí)行的回調(diào)函數(shù),也稱為線程函數(shù)
LPVOIDlpParameter,//傳入線程函數(shù)的參數(shù),不需傳遞參數(shù)時(shí)為NULL
DWORDdwCreationFlags,//控制線程創(chuàng)建的標(biāo)志
LPDWORDlpThreadId//傳出參數(shù),用于獲得線程ID,如果為NULL則不返回線程ID
);
lpThreadAttributes:指向SECURITY_ATTRIBUTES結(jié)構(gòu)的指針,決定返回的句柄是否可被子進(jìn)程繼承,如果為NULL則表示返回的句柄不能被子進(jìn)程繼承。
dwStackSize:線程棧的初始化大小,字節(jié)單位。系統(tǒng)分配這個(gè)值對(duì)
lpStartAddress:指向一個(gè)函數(shù)指針,該函數(shù)將被線程調(diào)用執(zhí)行。因此該函數(shù)也被稱為線程函數(shù)(ThreadProc),是線程執(zhí)行的起始地址,線程函數(shù)是一個(gè)回調(diào)函數(shù),由操作系統(tǒng)在線程中調(diào)用。線程函數(shù)的原型如下:
DWORDWINAPIThreadProc(LPVOIDlpParameter);//lpParameter是傳入的參數(shù),是一個(gè)空指針
lpParameter:傳入線程函數(shù)(ThreadProc)的參數(shù),不需傳遞參數(shù)時(shí)為NULL
dwCreationFlags:控制線程創(chuàng)建的標(biāo)志,有三個(gè)類型,0:線程創(chuàng)建后立即執(zhí)行線程;CREATE_SUSPENDED:線程創(chuàng)建后進(jìn)入就緒狀態(tài),直到線程被喚醒時(shí)才調(diào)用;STACK_SIZE_PARAM_IS_A_RESERVATION:dwStackSize參數(shù)指定線程初始化棧的大小,如果STACK_SIZE_PARAM_IS_A_RESERVATION標(biāo)志未指定,dwStackSize將會(huì)設(shè)為系統(tǒng)預(yù)留的值。
返回值:如果線程創(chuàng)建成功,則返回這個(gè)新線程的句柄,否則返回NULL。如果線程創(chuàng)建失敗,可通過(guò)GetLastError函數(shù)獲得錯(cuò)誤信息。
BOOLWINAPICloseHandle(HANDLEhObject);//關(guān)閉一個(gè)被打開的對(duì)象句柄可用這個(gè)函數(shù)關(guān)閉創(chuàng)建的線程句柄,如果函數(shù)執(zhí)行成功則返回true(非0),如果失敗則返回false(0),如果執(zhí)行失敗可調(diào)用GetLastError.函數(shù)獲得錯(cuò)誤信息。
感謝各位的閱讀,以上就是“C++中的多線程是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++中的多線程是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。