首页 > 代码库 > 三个线程打印ABC10次,ABCABCABC....
三个线程打印ABC10次,ABCABCABC....
// 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; }
三个线程打印ABC10次,ABCABCABC....
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。