循环和线程创建

时间:2013-01-23 01:33:46

标签: c++ multithreading loops

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

编辑:如果连续运行的消息循环如何,它在程序中的存在怎么会阻止执行消息循环之后的任何事情,因为它是一个连续的循环?

1 个答案:

答案 0 :(得分:1)

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

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

评论后编辑:
在下面的注释中引用的消息循环的specific example中,我们的想法是在之前创建以及可能的各种其他线程。主线程进入循环。然后循环运行,直到收到WM_QUIT消息,导致GetMessage返回等效的布尔false

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