作者:秋镇菜
运行多线程程序时,将Project->Property->c/c++->Code generation ->RunTime Library 改为多线程
#include <Windows.h>
#include <stdio.h>
#include <process.h>
#pragma comment(lib,"libcmt.lib")
const int NLOOP = 10;
int counter = 0;

void doit(void*);
CRITICAL_SECTION beswap ;
int main()
...{
HANDLE pnt[2];
InitializeCriticalSection(&beswap);
pnt[0] = (HANDLE)_beginthread(doit,0,NULL);
pnt[1] = (HANDLE)_beginthread(doit,0,NULL);
WaitForMultipleObjects( 2, pnt, TRUE, 1000L);
DeleteCriticalSection(&beswap);
return 0;
}
void doit(void*)
...{
printf("go... ");
int i, val = 0;
for(i = 0; i < NLOOP; ++i)
...{
EnterCriticalSection(&beswap);
val = counter;
printf("%d ",val+1);
counter = val + 1;
LeaveCriticalSection(&beswap);
}
printf("end... ");
return ;
}
本文通过一个简单的C++示例介绍了如何使用临界区(Critical Section)来实现多线程间的同步,确保线程安全地访问共享资源。示例中创建了两个线程,它们共享一个计数器变量,并利用临界区来防止竞态条件。
11万+

被折叠的 条评论
为什么被折叠?



