循环和线程创建
loops and thread creation
当使用循环(特别是在 c++ 中)时,它们是否都创建自己的线程?如果不是,哪些循环创建自己的线程,而不是哪些循环在其存在期间控制主线程的执行?
编辑:连续运行的消息循环呢,为什么它在程序中的存在不会阻止消息循环执行后的任何内容,因为它是一个连续循环?
循环(如 for
循环和while
循环)从不创建线程。主线程(或在代码中某处启动的任何其他线程)可以进入循环,就像它可以执行代码的所有其他部分一样,但新线程永远不会因进入循环而启动。
有一些特殊的库提供模板,这些模板可以以类似于循环的方式使用,例如 parallel_for
.这些将是启动线程(或类似的并行性),但这些实际上是函数模板(或类模板),而不是语言标准定义的循环语句。
评论后编辑:
在下面的注释中引用的消息循环的特定示例中,这个想法是在主线程进入循环之前创建窗口(对来自不同线程的事件做出反应)以及可能的各种其他线程。然后循环运行,直到收到WM_QUIT
消息,导致GetMessage
返回等效的布尔false
。
在主线程中运行,但它接收的消息是由单独的线程生成的,这些线程在进入循环之前创建和启动(由系统或您创建)。
相关文章:
- C++使用params创建线程函数会导致转换错误
- 为什么我不能在 while 循环中创建线程?
- 如何创建线程序列以按照启动顺序执行任务?
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- std::使用类成员函数创建线程 - 最佳实践
- CPP:如何使用需要指针的方法创建线程
- 使用 lambda 表达式创建线程时,如何为每个线程提供自己的 lambda 表达式副本
- C++,如何创建线程限制/受保护的变量和函数
- BOOST_LOG_SEV在创建线程后损坏async_read_some
- 为什么当我在构造函数中创建线程时,实例化对象和对象的指针的行为不同
- 如何通过调用类中的函数来创建线程
- 如何在Silverlight本机C 中创建线程
- 通过类构造函数创建线程
- C++:创建线程时出现问题;错误 C2672:"std::invoke":找不到匹配的重载函数
- 尝试在dll main中创建线程
- 如何在Linux上为C和C 创建线程安全LIB
- 如何在 dll 中创建线程 (c++)?
- 从调度队列块 [ swift / c++ ] 创建线程
- 从成员类功能创建线程
- 创建线程,但不要立即在 Linux 中运行它