循环和线程创建

loops and thread creation

本文关键字:创建 线程 循环      更新时间:2023-10-16

当使用循环(特别是在 c++ 中)时,它们是否都创建自己的线程?如果不是,哪些循环创建自己的线程,而不是哪些循环在其存在期间控制主线程的执行?

编辑:连续运行的消息循环呢,为什么它在程序中的存在不会阻止消息循环执行后的任何内容,因为它是一个连续循环?

循环(如 for 循环和while 循环)从不创建线程。主线程(或在代码中某处启动的任何其他线程)可以进入循环,就像它可以执行代码的所有其他部分一样,但新线程永远不会因进入循环而启动。

有一些特殊的库提供模板,这些模板可以以类似于循环的方式使用,例如 parallel_for .这些将是启动线程(或类似的并行性),但这些实际上是函数模板(或类模板),而不是语言标准定义的循环语句。

评论后编辑:
在下面的注释中引用的消息循环的特定示例中,这个想法是在主线程进入循环之前创建窗口(对来自不同线程的事件做出反应)以及可能的各种其他线程。然后循环运行,直到收到WM_QUIT消息,导致GetMessage返回等效的布尔false

因此,循环

在主线程中运行,但它接收的消息是由单独的线程生成的,这些线程在进入循环之前创建和启动(由系统或您创建)。