【发布时间】:2017-01-28 07:55:56
【问题描述】:
鉴于此 for 循环:
std::vector<std::string> V={"element1","element2","element3"};
for(int i=V.size(); i--;)
{
std::cout<<i<<std::endl;
}
是否可以同时运行 for 循环的每个循环?那么每个 std::cout 会同时出现吗?
我有一个函数指针向量,我需要循环并同时执行,不是一个接一个。
注意:在这种情况下,std::thread、std::async 无济于事,因为我不知道向量的大小,因此必须在每个循环中创建一个线程并运行它。这个不会导致并发。
【问题讨论】:
-
您应该进一步阐明您希望输出到 std::cout 的外观。您需要特定的输出顺序吗?
-
总之不可能,即使你使用线程它们,它们也不会同时执行
-
我的意思是...您可以创建线程并让它们都等待条件变量,然后在创建它们后发出条件信号,但@PavneetSingh 是对的,它们永远不会“同时”运行,而是交错执行。不过,这可能已经足够好了。也许对预期结果进行更多澄清会有所帮助。
-
线程当然可以并发执行...
-
tbb::parallel_for可能是您正在寻找的 (threadingbuildingblocks.org/docs/help/tbb_userguide/…)。