手机
当前位置:查字典教程网 >编程开发 >C语言 >C++中Semaphore内核对象用法实例
C++中Semaphore内核对象用法实例
摘要:本文实例讲述了C++中Semaphore内核对象的用法,分享给大家供大家参考。具体方法如下:复制代码代码如下://Semaphore.cpp...

本文实例讲述了C++中Semaphore内核对象的用法,分享给大家供大家参考。具体方法如下:

复制代码 代码如下:// Semaphore.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include <Windows.h>

#include <process.h>

HANDLE g_hSemaphore;

DWORD g_nConut1 = 0;

DWORD g_nConut2 = 0;

unsigned __stdcall ThreadProc1( void* pArguments )

{

::WaitForSingleObject(g_hSemaphore, INFINITE);

for (int i=0;i<10000;i++)

{

g_nConut1++;

g_nConut2++;

}

::ReleaseSemaphore(g_hSemaphore, 1, NULL);

printf("ThreadProc1n");

return 0;

}

unsigned __stdcall ThreadProc2( void* pArguments )

{

::WaitForSingleObject(g_hSemaphore, INFINITE);

for (int i=0;i<10000;i++)

{

g_nConut1++;

g_nConut2++;

}

::ReleaseSemaphore(g_hSemaphore, 1, NULL);

printf("ThreadProc2n");

return 0;

}

unsigned __stdcall ThreadProc3( void* pArguments )

{

::WaitForSingleObject(g_hSemaphore, INFINITE);

for (int i=0;i<10000;i++)

{

g_nConut1++;

g_nConut2++;

}

::ReleaseSemaphore(g_hSemaphore, 1, NULL);

printf("ThreadProc3n");

return 0;

}

int _tmain(int argc, _TCHAR* argv[])

{

g_hSemaphore = ::CreateSemaphore(NULL, 2, 2, NULL);

HANDLE hThread[3];

hThread[0] = (HANDLE)::_beginthreadex(NULL, 0, ThreadProc1, NULL, 0, NULL);

hThread[1] = (HANDLE)::_beginthreadex(NULL, 0, ThreadProc2, NULL, 0, NULL);

hThread[2] = (HANDLE)::_beginthreadex(NULL, 0, ThreadProc3, NULL, 0, NULL);

::WaitForMultipleObjects(2,hThread,TRUE, INFINITE);

printf("g_count1=%dn", g_nConut1);

printf("g_count2=%dn", g_nConut2);

printf("main finished.n");

return 0;

}

希望本文所述对大家的C++程序设计有所帮助。

【C++中Semaphore内核对象用法实例】相关文章:

C++中函数模板的用法详细解析

c语言中static的用法详细示例分析

map插入自定义对象总结

getdate()函数的用法实例

C++ using namespace std 用法深入解析

c语言中使用BF-KMP算法实例

C++ sizeof 实例解析

c++中inline的用法分析

C语言中函数声明与调用问题

C++中栈结构建立与操作详细解析

精品推荐
分类导航