当使用循环(特别是在 C++ 中)时,它们是否都创建了自己的线程?如果不是,哪些循环创建自己的线程,而不是哪些循环在其存在期间控制主线程的执行?
编辑:连续运行的消息循环怎么样,为什么它存在于程序中并不能阻止消息循环执行后的任何事情,因为它是一个连续循环?
当使用循环(特别是在 C++ 中)时,它们是否都创建了自己的线程?如果不是,哪些循环创建自己的线程,而不是哪些循环在其存在期间控制主线程的执行?
编辑:连续运行的消息循环怎么样,为什么它存在于程序中并不能阻止消息循环执行后的任何事情,因为它是一个连续循环?
循环,例如for
-loops 和while
-loops 从不创建线程。主线程(或在代码中某处启动的任何其他线程)可以进入循环,就像它可以执行代码的所有其他部分一样,但进入循环后永远不会启动新线程。
有一些特殊的库提供模板,可以以类似于循环的方式使用,例如parallel_for
. 这些将是启动线程(或类似类型的并行),但它们实际上是函数模板(或类模板),而不是语言标准定义的循环语句。
评论后编辑:
在您在下面的评论中提到的消息循环的具体示例中,其想法是在主线程进入循环之前创建窗口(对来自不同线程的事件作出反应)和可能的各种其他线程。然后循环运行,直到WM_QUIT
收到消息,导致GetMessage
返回等效的 boolean false
。
所以循环在主线程中运行,但它接收到的消息是由单独的线程生成的,在进入循环之前创建和启动(由系统或您)。