关键代码区 线程同步
2014-01-06 18:08
225 查看
#include <windows.h>
DWORD WINAPI Fun1proc(LPVOID lpParameter); // thread data
DWORD WINAPI Fun2proc(LPVOID lpParameter);
int ticket = 100;
CRITICAL_SECTION g_cs;
void main()
{
InitializeCriticalSection(&g_cs);
DWORD dThreadID1 = 123;
DWORD dThreadID2 = 456;
HANDLE hThread1 = CreateThread(NULL,0,Fun1proc,NULL,0,&dThreadID1);
HANDLE hThread2 = CreateThread(NULL,0,Fun2proc,NULL,0,&dThreadID2);
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(4000);
DeleteCriticalSection(&g_cs);
}
DWORD WINAPI Fun1proc(LPVOID lpParameter)
{
while (TRUE)
{
EnterCriticalSection(&g_cs);
if (ticket>0)
{
cout<<"thread1 sailed "<<ticket--<<endl;
}
else
break;
LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI Fun2proc(LPVOID lpParameter)
{
while (TRUE)
{
EnterCriticalSection(&g_cs);
if (ticket>0)
{
cout<<"thread2 sailed "<<ticket--<<endl;
}
else
break;
LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI Fun1proc(LPVOID lpParameter); // thread data
DWORD WINAPI Fun2proc(LPVOID lpParameter);
int ticket = 100;
CRITICAL_SECTION g_cs;
void main()
{
InitializeCriticalSection(&g_cs);
DWORD dThreadID1 = 123;
DWORD dThreadID2 = 456;
HANDLE hThread1 = CreateThread(NULL,0,Fun1proc,NULL,0,&dThreadID1);
HANDLE hThread2 = CreateThread(NULL,0,Fun2proc,NULL,0,&dThreadID2);
CloseHandle(hThread1);
CloseHandle(hThread2);
Sleep(4000);
DeleteCriticalSection(&g_cs);
}
DWORD WINAPI Fun1proc(LPVOID lpParameter)
{
while (TRUE)
{
EnterCriticalSection(&g_cs);
if (ticket>0)
{
cout<<"thread1 sailed "<<ticket--<<endl;
}
else
break;
LeaveCriticalSection(&g_cs);
}
return 0;
}
DWORD WINAPI Fun2proc(LPVOID lpParameter)
{
while (TRUE)
{
EnterCriticalSection(&g_cs);
if (ticket>0)
{
cout<<"thread2 sailed "<<ticket--<<endl;
}
else
break;
LeaveCriticalSection(&g_cs);
}
return 0;
}
相关文章推荐
- 线程同步之关键代码段
- 线程同步--关键代码段
- windows笔记-【用户方式线程同步】关键代码段
- 线程同步--关键代码段
- 线程同步,互斥 事件 和关键代码的比较
- json2jsoncpp 关键代码分析1
- Android之打开闪光灯关键代码
- VC++深入详解——第16章:线程同步,关键代码段
- Java 桌面精灵关键代码
- iOS关键代码遭泄露;Google正式抛弃HTTP;微博网页版出故障 | 一周业界事
- LESSON 7:MFC 对话框的编写 ,关键代码;
- ArcEngine 专题图关键代码
- Test.aspx关键代码
- 秒杀多线程第五篇 经典线程同步 关键段CS
- 程序异常立刻退出,如何定位关键代码位置
- 必杀技公布-用特征码定位关键代码,秒杀MFC程序
- 必杀技公布——用特征码定位关键代码,秒杀MFC程序
- JDBC各种数据库连接URL关键代码
- 苹果官方Toast Demo关键代码,Swift实现
- Android版网易云音乐唱片机唱片磁盘旋转及唱片机机械臂动画关键代码实现思路