作者:秋镇菜
运行多线程程序时,将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 ;
}
#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 ;
}