c++多執行緒例項
阿新 • • 發佈:2018-12-11
主要總結了基於C++的多執行緒函式CreateThread,互斥鎖(或者稱資源獨佔)函式CreateMutex,等待資源函式WaitForSingleObject,關閉執行緒函式(其實是關閉執行緒的控制代碼)CloseHanlde,釋放互斥鎖函式ReleaseMutex的用法例項,具體的程式用法和解釋如下文所示:
程式的功能是:主執行緒每隔1s輸出一句字串,然後支執行緒每隔2s輸出一句字串,主執行緒和支執行緒分別交替輸出一句字串,實現程式碼如下所示:
#include <iostream> #include <Windows.h> using namespace std; HANDLE hMutex; DWORD WINAPI Fun(LPVOID) { while(true) { WaitForSingleObject(hMutex, INFINITE);//獲取等待資源,一直等待,知道獲取"screen"資源後,才返回 cout << "支執行緒1" << endl; Sleep(2000); ReleaseMutex(hMutex);//釋放資源獨佔函式 } } int _tmain(int argc, _TCHAR* argv[]) { HANDLE handle1 = CreateThread(NULL, 0, Fun,NULL, 0,NULL);//建立多執行緒 hMutex = CreateMutex(NULL,FALSE,"screen");//建立資源獨佔函式CreateMutex,該函式的功能是獨佔一個資源或者執行緒 CloseHandle(handle1);//釋放執行緒 while(true) { WaitForSingleObject(hMutex, INFINITE);//獲取等待資源,一直等待,知道獲取"screen"資源後,才返回 cout << "主執行緒1" << endl; Sleep(1000); ReleaseMutex(hMutex);//釋放資源獨佔函式 } system("pause"); return 0; }