C++使用CriticalSection实现线程同步实例
2014-10-10 10:14
1406 查看
本文实例讲述了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=%d\n",g_cnt1); printf("g_cnt2=%d\n",g_cnt2); ::DeleteCriticalSection(&cs); ::CloseHandle(hThread[0]); ::CloseHandle(hThread[1]); return 0; }
希望本文所述对大家的C++程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- C++使用CriticalSection实现线程同步实例
- C++使用CriticalSection实现线程同步实例
- C++使用CriticalSection实现线程同步
- Android-使用C++实现调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(八)
- C++使用信号量对象实现线程同步
- 使用C++实现一套简单的状态机模型——实例
- C++正则表达式使用实例--实现一个markdown代码标记转换工具
- c++(11)使用librdkafka库实现kafka的消费实例
- 使用C++实现一套简单的状态机模型——实例
- 使用C++实现一套简单的状态机模型——实例
- 使用C++的string实现高精度加法运算的实例代码
- C++ 使用模板实现一个List的实例
- 使用C++中string实现任意长度的正小数、整数之间加减法方法实例
- 使用C++实现一套简单的状态机模型——实例
- windows下使用Critical Section和Mutex实现线程同步实例
- <实例>C++ 将一句话里的单词进行倒置,标点符号不倒换——使用string库实现
- C++使用ICE实现两台主机通信实例
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 使用Java程序实现随机验证码功能的实例
- 使用SWIG实现C/C++与其他语言间的互相调用