這篇文章主要講解了“C++中的多線程是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中的多線程是什么”吧!
創(chuàng)新互聯(lián)提供做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設(shè)計,成都品牌網(wǎng)站建設(shè),一元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破成百上千家,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.
在Windows平臺,WindowsAPI提供了對多線程的支持。前面進程和線程的概念中我們提到,一個程序至少有一個線程,這個線程稱為主線程(mainthread),如果我們不顯示地創(chuàng)建線程,那我們產(chǎn)的程序就是只有主線程的間線程程序。
CreateThread與CloseHandle
CreateThread用于創(chuàng)建一個線程,其函數(shù)原型如下:
HANDLEWINAPICreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,//線程安全相關(guān)的屬性,常置為NULL
SIZE_TdwStackSize,//新線程的初始化棧在大小,可設(shè)置為0
LPTHREAD_START_ROUTINElpStartAddress,//被線程執(zhí)行的回調(diào)函數(shù),也稱為線程函數(shù)
LPVOIDlpParameter,//傳入線程函數(shù)的參數(shù),不需傳遞參數(shù)時為NULL
DWORDdwCreationFlags,//控制線程創(chuàng)建的標(biāo)志
LPDWORDlpThreadId//傳出參數(shù),用于獲得線程ID,如果為NULL則不返回線程ID
);
lpThreadAttributes:指向SECURITY_ATTRIBUTES結(jié)構(gòu)的指針,決定返回的句柄是否可被子進程繼承,如果為NULL則表示返回的句柄不能被子進程繼承。
dwStackSize:線程棧的初始化大小,字節(jié)單位。系統(tǒng)分配這個值對
lpStartAddress:指向一個函數(shù)指針,該函數(shù)將被線程調(diào)用執(zhí)行。因此該函數(shù)也被稱為線程函數(shù)(ThreadProc),是線程執(zhí)行的起始地址,線程函數(shù)是一個回調(diào)函數(shù),由操作系統(tǒng)在線程中調(diào)用。線程函數(shù)的原型如下:
DWORDWINAPIThreadProc(LPVOIDlpParameter);//lpParameter是傳入的參數(shù),是一個空指針
lpParameter:傳入線程函數(shù)(ThreadProc)的參數(shù),不需傳遞參數(shù)時為NULL
dwCreationFlags:控制線程創(chuàng)建的標(biāo)志,有三個類型,0:線程創(chuàng)建后立即執(zhí)行線程;CREATE_SUSPENDED:線程創(chuàng)建后進入就緒狀態(tài),直到線程被喚醒時才調(diào)用;STACK_SIZE_PARAM_IS_A_RESERVATION:dwStackSize參數(shù)指定線程初始化棧的大小,如果STACK_SIZE_PARAM_IS_A_RESERVATION標(biāo)志未指定,dwStackSize將會設(shè)為系統(tǒng)預(yù)留的值。
返回值:如果線程創(chuàng)建成功,則返回這個新線程的句柄,否則返回NULL。如果線程創(chuàng)建失敗,可通過GetLastError函數(shù)獲得錯誤信息。
BOOLWINAPICloseHandle(HANDLEhObject);//關(guān)閉一個被打開的對象句柄可用這個函數(shù)關(guān)閉創(chuàng)建的線程句柄,如果函數(shù)執(zhí)行成功則返回true(非0),如果失敗則返回false(0),如果執(zhí)行失敗可調(diào)用GetLastError.函數(shù)獲得錯誤信息。
感謝各位的閱讀,以上就是“C++中的多線程是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++中的多線程是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!