多线程循环输出123456

代码如下:
#include
#include<windows.h>
HANDLE evs[5],evs2[4],hds[6];
class threads
{
public:
static inline void draw1()
{
while (1)
{
Sleep(40);
WaitForSingleObject(evs[0], INFINITE);
cout << 1;
SetEvent(evs[1]);
}
}
static inline void part1()
{
while (1)
{
Sleep(1);
WaitForSingleObject(evs[1], INFINITE);
cout << 2;
SetEvent(evs2[0]);
SetEvent(evs[2]);
}
}
static inline void part2()
{
while (1)
{
Sleep(1);
WaitForSingleObject(evs[2], INFINITE);
cout << 3;
SetEvent(evs2[1]);
SetEvent(evs[3]);
}
}
static inline void part3()
{
while (1)
{
Sleep(1);
WaitForSingleObject(evs[3], INFINITE);
cout << 4;
SetEvent(evs2[2]);
SetEvent(evs[4]);
}
}
static inline void part4()
{
while (1)
{
Sleep(1);
WaitForSingleObject(evs[4], INFINITE);
cout << 5;
SetEvent(evs2[3]);
}
}
static inline void draw2()
{
while (1)
{
Sleep(1);
WaitForMultipleObjects(4, evs2, true, INFINITE);
cout << 6 ;
SetEvent(evs[0]);
}
}
};
int main()
{
for (int i = 0; i < 4; i++)
{
evs[i] = CreateEvent(NULL, false, false, NULL);
evs2[i] = CreateEvent(NULL, false, false, NULL);
}
evs[4] = CreateEvent(NULL, false, false, NULL);
hds[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threads::draw1, NULL, 0, NULL);
CloseHandle(hds[0]);
hds[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threads::part1, NULL, 0, NULL);
CloseHandle(hds[1]);
hds[2] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threads::part2,NULL, 0, NULL);
CloseHandle(hds[2]);
hds[3] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threads::part3, NULL, 0, NULL);
CloseHandle(hds[3]);
hds[4] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threads::part4, NULL, 0, NULL);
CloseHandle(hds[4]);
hds[5] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threads::draw2, NULL, 0, NULL);
CloseHandle(hds[5]);
SetEvent(evs[0]);
while(1)
{
//nop
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值