如何多次调用3个线程?

如何多次调用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表示重新启动线程, 而不是 从头开始重新运行线程。 它只是从之前停止的地方恢复过程

基本上有两种方法。

  1. 在每个迭代中创建新的线程。
  2. 重写你的线程进程“永远”,并使用事件与它同步。

请参阅这里: 如何重新启动线程?

当你用一个线程句柄调用WaitForSingleObject()时,你正在等待线程完成运行(当它从线程处理程序返回时)。 完成后, ResumeThread()将不再有效果。

你应该看看使用事件来同步线程而不是ResumeThread。