c++ - 如何在不等待 C++ 响应的情况下启动线程?

标签 c++ windows multithreading visual-c++ handle

在一个for循环中有一个CreateThread()调用,我希望所有的线程依次启动,每个线程向一个对象写入数据。

      `$while (ii != mapOServs.end())
{
      Array_of_Thread_Handles[i] = CreateThread(NULL,0,MyThread, &args[i] , 0 , NULL);
    }

但线程只有在遇到 WaitForMultipleObjects 或 WaitForSingleObject 时才会启动。

如何在不等待响应的情况下让所有线程依次运行?

另外,最好使用什么对象,以便它可以同时被不同的线程修改。

最佳答案

线程确实是立即“启动”的——Windows 将创建必要的内部结构、分配堆栈等,并将它们添加到调度程序的运行列表中。但是,它们不一定会立即安排

特别是,执行启动的线程可能会继续运行,直到用完它的时间片。如果您运行的线程多于处理器内核(包括其他进程中的线程),那么您的新线程很可能暂时不会在处理器上进行调度,并且执行启动的线程可能会执行同步调用,例如 WaitForSingleObject 在他们中的任何一个有机会做任何工作之前。

关于c++ - 如何在不等待 C++ 响应的情况下启动线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686074/

相关文章:

c++ - 与 Thrift Hook

c++ - 为什么 WindowStateChange 事件对我不起作用

c++ - MFC 应用程序 : How can I can register my program in Add or Remove Programs (ARP)?

c++ - 如何在 C++ 中用线程拆分 for 循环

c++ - 如何将 std::string 转换为大写?

c++ - 使用 babeltrace API 计算流中的所有事件

c++ - 如何以编程方式检索 C++ 中 64 位进程的详细信息?

java - 如何禁用(或隐藏)JFrame 上的关闭 (x) 按钮?

c# - 具有 volatile 或内存屏障的双锁

java - 使用内在锁内置于 Java 中的同步决策(好或坏)