临界区线程对象的使用

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 21:05   60   0

临界区线程对象的使用

#include <windows.h>
#include <iostream>
using namespace std;

CRITICAL_SECTION g_cs;
bool g_bContinue = true;
int g_count1 = 0;
int g_count2 = 0;

DWORD WINAPI ThreadProc(LPVOID lpParameter);

int main()
{
 HANDLE g_hTrd[2];

 InitializeCriticalSection(&g_cs);     //This function initializes a critical section object. 
 
 g_hTrd[0] = CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
 g_hTrd[1] = CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
 
 WaitForMultipleObjects(2,g_hTrd,FALSE,1000); 
 g_bContinue = false;
 
 CloseHandle(g_hTrd[0]);
 CloseHandle(g_hTrd[1]);

 DeleteCriticalSection(&g_cs);       //This function releases all resources used by an unowned critical section object. 
 
 Sleep(1);
 cout << "g_count1 = " << g_count1 << "\t g_count2 = " << g_count2 << endl;
 return 0;
}


DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
 while(g_bContinue)
 {
  //This function waits for ownership of the specified critical section object. 
  //The function returns when the calling thread is granted ownership. 
  EnterCriticalSection(&g_cs); 
  g_count1++;
  g_count2++;
  cout << "g_cnt1 = " << g_count1 << "\t g_cnt2 = " << g_count2 << endl;
  //This function releases ownership of the specified critical section object. 
LeaveCriticalSection(&g_cs);               
}
 return 0;
}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP