`
mylove2060
  • 浏览: 330854 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

windows下线程同步

阅读更多
#include <stdio.h>

#include <numeric>
#include <vector>
#include <string>
#include <map>
#include "iostream"
#include "windows.h"

using namespace std;
CRITICAL_SECTION g_cs;
int tickets=100;
DWORD WINAPI Fun1
(LPVOID lparameter);
DWORD WINAPI Fun2
(LPVOID lparameter);

int main(int argc, char* argv[])
{
	HANDLE hthread1=CreateThread(NULL,0,Fun1,NULL,0,NULL);
	HANDLE hthread2=CreateThread(NULL,0,Fun2,NULL,0,NULL);
	CloseHandle(hthread1);
	CloseHandle(hthread2);
	//initialize the critical section
	InitializeCriticalSection(&g_cs);
	Sleep(1000);
	// delete the critical section
	DeleteCriticalSection(&g_cs);
	return 0;
}
DWORD WINAPI Fun1
(LPVOID lparameter)
{
	while (true)
	{
		Sleep(1);
		EnterCriticalSection(&g_cs);
		if (tickets>0)
		{
			cout<<"thread 1 is running "<<tickets--<<endl;
		}
		else
			break;
		LeaveCriticalSection(&g_cs);
	}

	return 0;
}
DWORD WINAPI Fun2
(LPVOID lparameter)
{
	while (true)
	{
		Sleep(1);
		EnterCriticalSection(&g_cs);
		if (tickets>0)
		{
			cout<<"thread 2 is running "<<tickets--<<endl;
		} 
		else
		{
			break;
		}
		LeaveCriticalSection(&g_cs);
	}
	return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics