手机
当前位置:查字典教程网 >编程开发 >C语言 >C++使用CriticalSection实现线程同步实例
C++使用CriticalSection实现线程同步实例
摘要:本文实例讲述了C++使用CriticalSection实现线程同步的方法,在前文C++线程同步实例分析的基础上增加了四行代码,使用了四个函数...

本文实例讲述了C++使用CriticalSection实现线程同步的方法,在前文C++线程同步实例分析的基础上增加了四行代码,使用了四个函数:

EnterCriticalSection ::DeleteCriticalSection ::EnterCriticalSection ::LeaveCriticalSection此时,打印出来的数字就相等了。

具体代码如下:

#include "stdafx.h" #include <Windows.h> 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=%dn",g_cnt1); printf("g_cnt2=%dn",g_cnt2); ::DeleteCriticalSection(&cs); ::CloseHandle(hThread[0]); ::CloseHandle(hThread[1]); return 0; }

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

【C++使用CriticalSection实现线程同步实例】相关文章:

新旧MFC版本实现CEdit透明的2种方法的实例代码

C语言 实现N阶乘的程序代码

C++产生随机数的实现代码

使用OpenGL实现3D立体显示的程序代码

基于Protobuf C++ serialize到char*的实现方法分析

用C语言实现单链表的各种操作(一)

如何用C++实现双向循环链表

C++中const的实现机制深入分析

解析C/C++中如何终止线程的运行

c语言实现二叉查找树实例方法

精品推荐
分类导航