C++使用CriticalSection实现线程同步实例

Zandra ·
更新时间:2024-11-14
· 827 次阅读

本文实例讲述了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++实现一个线程安全的单例工厂实现代码linux下的C\C++多进程多线程编程实例详解老生常谈C++的单例模式与线程安全单例模式(懒汉/饿汉)从C++单例模式到线程安全详解c++实现简单的线程池C++程序中启动线程的方法C++封装线程类的实现方法C++实现多线程查找文件实例C++ 线程(串行 并行 同步 异步)详解



线程同步 c+ C++ 线程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号