gpt4 book ai didi

c++ - 如何多次顺序调用3个线程?

转载 作者:可可西里 更新时间:2023-11-01 10:00:22 24 4
gpt4 key购买 nike

如何多次顺序调用3个线程?例如:在迭代 1 中,执行顺序应为“Thread0->thread1->thread2”,然后在迭代 2 中执行顺序应相同,即“Thread0 -> thread1->thread2”,依此类推。示例代码只执行一次 3 个线程。它不会进行第二次迭代。

    Thread0 = CreateThread( NULL,0,ThreadProc0, NULL, CREATE_SUSPENDED, &ThreadID);
Thread1 = CreateThread( NULL,0,ThreadProc1, NULL, CREATE_SUSPENDED, &ThreadID);
Thread2 = CreateThread( NULL,0,ThreadProc2, NULL, CREATE_SUSPENDED, &ThreadID);

for(i=0;i<iterations;i++) //Iterations in calling threads
{
ResumeThread(Thread0);
WaitForSingleObject(Thread0, INFINITE);
ResumeThread(Thread1);
WaitForSingleObject(Thread1, INFINITE);
ResumeThread(Thread2);
WaitForSingleObject(Thread2, INFINITE);
}

// Close thread and semaphore handles

最佳答案

我认为你误解了这个概念。 ResumeThread 表示重新启动线程,从头开始重新运行线程proc。它只是恢复之前停止的过程。

基本上有两种方法。

  1. 在每次迭代中创建新线程。
  2. 重写您的线程过程以“永远”存在并使用事件与其同步。

引用这里:How to restart threads?

关于c++ - 如何多次顺序调用3个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com