1. 程式人生 > >c++多執行緒例項

c++多執行緒例項

主要總結了基於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;
}