当前位置: 首页 > 启航 > 正文

criticalsection #includestdafx.

发布时间:2023-06-28 00:09:27 分类:启航 浏览:5081


  #include "stdafx.h"

  #include

  DWORD g_cnt1;

  DWORD g_cnt2;

  BOOL g_bContinue=TRUE;

  CRITICAL_SECTION cs;

  DWORD WINAPI ThreadProc(__in LPVOID lpParameter)

  {

  ::EnterCriticalSection(&cs);

  while(g_bContinue)

  {

  g_cnt1++;

  g_cnt2++;

  }

  ::LeaveCriticalSection(&cs);

  return 0;

  }

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

  {

  HANDLE hThread[2];

  g_cnt1=g_cnt2=0;

  ::InitializeCriticalSection(&cs);

  hThread[0]=::CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);

  hThread[1]=::CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);

  Sleep(1000);

  g_bContinue=FALSE;

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

  printf("g_cnt1=%d\n",g_cnt1);

  printf("g_cnt2=%d\n",g_cnt2);

  ::DeleteCriticalSection(&cs);

  ::CloseHandle(hThread[0]);

  ::CloseHandle(hThread[1]);

  return 0;

  }