代码如下:
#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
}
}
博客展示了一段C++代码,通过创建多个线程和事件对象实现特定输出逻辑。定义了一个`threads`类,包含多个静态内联函数用于线程执行,在`main`函数中创建线程并设置事件,实现循环输出1 - 6的效果。

被折叠的 条评论
为什么被折叠?



