roy*_*g86 2 c++ windows multithreading handle visual-c++
在for循环中有一个CreateThread()调用,我希望所有的线程一个接一个地启动,每个线程将数据写入一个对象.
`$while (ii != mapOServs.end())
{
Array_of_Thread_Handles[i] = CreateThread(NULL,0,MyThread, &args[i] , 0 , NULL);
}
Run Code Online (Sandbox Code Playgroud)
但是线程在遇到WaitForMultipleObjects或WaitForSingleObject之前不会启动.
如何让所有线程一个接一个地运行而不等待响应?
此外,最好的对象是什么,以便它可以同时由不同的线程修改.
线程确实立即"启动"--- Windows将创建必要的内部结构,分配堆栈等,并将它们添加到调度程序的运行列表中.但是,它们不一定会立即安排.
特别是,执行启动的线程可能会继续运行,直到它耗尽其时间片.如果您运行的线程数多于处理器核心(包括其他进程中的线程),那么您的新线程可能暂时不会在处理器上进行调度,并且执行启动的线程可能会执行同步调用,例如WaitForSingleObject之前他们有机会做任何工作.