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