// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include "windows.h" #include<string> using namespace std; HANDLE hEventA; HANDLE hEventB; HANDLE hEventC; DWORD WINAPI funproc(LPVOID lpparentet) { string s = (char * )lpparentet; int count = 0; string sA = "A"; string sB = "B"; string sC = "C"; while (count < 10) { Sleep(100); if (sA.compare(s)==0) { DWORD dwRet = WaitForSingleObject(hEventA, INFINITE); if (dwRet == WAIT_OBJECT_0) { printf("A"); count++; SetEvent(hEventB); } } if (sB.compare(s) == 0) { DWORD dwRet = WaitForSingleObject(hEventB, INFINITE); if (dwRet == WAIT_OBJECT_0) { printf("B"); count++; SetEvent(hEventC); } } if (sC.compare(s) == 0) { DWORD dwRet = WaitForSingleObject(hEventC, INFINITE); if (dwRet == WAIT_OBJECT_0) { printf("C"); count++; SetEvent(hEventA); } } } return 0; } int main() { hEventA = CreateEvent(NULL, false, true, NULL); hEventB = CreateEvent(NULL, false, false, NULL); hEventC = CreateEvent(NULL, false, false, NULL); HANDLE hThreadA = CreateThread(NULL, 0, funproc, "A", 0, NULL); HANDLE hThreadB = CreateThread(NULL, 0, funproc, "B", 0, NULL); HANDLE hThreadC = CreateThread(NULL, 0, funproc, "C", 0, NULL); Sleep(10000); return 0; }
时间: 2024-10-10 11:43:56