源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C++中Semaphore内核对象用法实例

  • 时间:2021-01-08 18:57 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C++中Semaphore内核对象用法实例
本文实例讲述了C++中Semaphore内核对象的用法,分享给大家供大家参考。具体方法如下:
[u]复制代码[/u] 代码如下:
// 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("ThreadProc1\n");      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("ThreadProc2\n");      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("ThreadProc3\n");      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=%d\n", g_nConut1);      printf("g_count2=%d\n", g_nConut2);      printf("main finished.\n");      return 0;  }
希望本文所述对大家的C++程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部