程序功能描述:从控制台接受输入数字,推出前输出所输入数字的总和。 事件句柄描述:ev1用来输入和计算数字总和,ev2用来退出,ev3用来同步主线程和副线程的输入。 #include <Windows.h> HANDLE ev1,ev2,ev3; DWORD CALLBACK ThreadProc() { int num,sum = 0; DWORD ret; while(WaitForSingleObject(ev2,0) == WAIT_TIMEOUT) { ret = WaitForSingleObject(ev1,100); if(ret == WAIT_OBJECT_0) { printf("input a num:"); scanf("%d",&num); printf("/n"); sum += num; SetEvent(ev3); } } printf("sum:%d/n",sum); return 0; } int _tmain(int argc, _TCHAR* argv[]) { char c; HANDLE hThread; ev1 = CreateEvent(NULL,FALSE,FALSE,NULL); ev2 = CreateEvent(NULL,FALSE,FALSE,NULL); ev3 = CreateEvent(NULL,FALSE,FALSE,NULL); hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,0); c = getchar(); while(1) { switch(c) { case 'c': SetEvent(ev1); break; case 'x': SetEvent(ev2); goto Exit; default: SetEvent(ev3); break; } WaitForSingleObject(ev3,INFINITE); c = getchar(); } Exit: WaitForSingleObject(hThread,INFINITE); CloseHandle(hThread); CloseHandle(ev2); CloseHandle(ev1); system("pause"); return 0; }