信号量多线程同步输出 123123123
来源:互联网 发布:狩猎者安全防护软件 编辑:程序博客网 时间:2024/06/03 09:22
CRITICAL_SECTION g_cs;
HANDLE g_hEvent1;
HANDLE g_hEvent2;
HANDLE g_hEvent3;
int g_nCount = 3;
int nPos = 0;
unsigned int __stdcall ThreadFun1(void* pM)
{
for(int i = 0; i < g_nCount; ++i)
{
WaitForSingleObject(g_hEvent3, INFINITE);
//ResetEvent(g_hEvent3);
EnterCriticalSection(&g_cs);
g_Data[nPos] = 1;
nPos++;
LeaveCriticalSection(&g_cs);
//
ReleaseSemaphore(g_hEvent1, 1, NULL);
//通知缓冲区已为空
//SetEvent(g_hEvent2);
}
return 0;
}
unsigned int __stdcall ThreadFun2(void* pM)
{
for(int i = 0; i < g_nCount; ++i)
{
WaitForSingleObject(g_hEvent1, INFINITE);
//ResetEvent(g_hEvent1);
EnterCriticalSection(&g_cs);
g_Data[nPos] = 2;
nPos++;
LeaveCriticalSection(&g_cs);
ReleaseSemaphore(g_hEvent2, 1, NULL);
//通知缓冲区已为空
//SetEvent(g_hEvent2);
}
return 0;
}
unsigned int __stdcall ThreadFun3(void* pM)
{
for(int i = 0; i < g_nCount; ++i)
{
WaitForSingleObject(g_hEvent2, INFINITE);
//ResetEvent(g_hEvent2);
EnterCriticalSection(&g_cs);
g_Data[nPos] = 3;
nPos++;
LeaveCriticalSection(&g_cs);
//通知缓冲区已为空
ReleaseSemaphore(g_hEvent3, 1, NULL);
//SetEvent(g_hEvent3);
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&g_cs);
g_hEvent1 = CreateSemaphore(NULL, 0, 1, NULL);
g_hEvent2 = CreateSemaphore(NULL, 0, 1, NULL);
g_hEvent3 = CreateSemaphore(NULL, 1, 1, NULL);
HANDLE hThread[3];
hThread[0] = (HANDLE)_beginthreadex(NULL, 0, ThreadFun1, NULL, 0, NULL);
hThread[1] = (HANDLE)_beginthreadex(NULL, 0, ThreadFun2, NULL, 0, NULL);
hThread[2] = (HANDLE)_beginthreadex(NULL, 0, ThreadFun3, NULL, 0, NULL);
WaitForMultipleObjects(3, hThread, TRUE, INFINITE);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
CloseHandle(hThread[2]);
CloseHandle(g_hEvent1);
CloseHandle(g_hEvent2);
CloseHandle(g_hEvent3);
DeleteCriticalSection(&g_cs);
- 信号量多线程同步输出 123123123
- windows多线程同步--信号量
- windows多线程同步--信号量
- 信号量多线程同步
- 多线程同步之信号量
- Linux 多线程同步(信号量)
- 【多线程】使用信号量进行同步
- Linux 多线程同步(信号量)
- windows多线程同步机制---信号量
- 多线程同步——信号量
- linux 多线程用信号量进行同步例子
- 多线程同步之信号量、互斥量之理解
- 【Linux】 多线程编程(信号量实现同步)
- 多线程同步之Semaphores(信号量)
- 多线程7:经典线程同步 信号量Semaphore
- Linux多线程编程入门-同步机制-信号量
- 白话windows多线程同步之信号量
- C++ 信号量 多线程同步互斥
- boost库
- Javascript中Dom常用操作总结
- CSS和HTML结合的方式
- java 数据库编程
- 发现一个nginx LUA开发Web App的框架
- 信号量多线程同步输出 123123123
- 测试b3log的查询方法
- AIR 自定义窗口的外观
- Google map draw polygon
- 面试题之二叉树系列
- openfire 在自己的eclipse中运行
- 一个合格程序员该做的事情——你做好了吗? .
- 探索ORACLE之11g DataGuard_01概念
- Python3.x和Python2.x的区别