#include <Windows.h> #include <stdio.h> #include <process.h> #pragma comment(lib,"libcmt.lib") const int NLOOP = 100; 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...\n"); int i, val = 0; for(i = 0; i < NLOOP; ++i) { EnterCriticalSection(&beswap); val = counter; printf("%d\n",val+1); counter = val + 1; LeaveCriticalSection(&beswap); } printf("end...\n"); return ; } |