我们可以在线程内调用 async() 吗?

时间:2021-06-16 02:15:16

标签: c++ asynchronous c++17

可能是一个愚蠢的问题,谷歌没有帮助我。在线程内调用 asycn() 是否是一个好习惯。 这是我的场景。

Thread1()
{
   auto fu = async(checkStatus);
   while ( waitEvent && fu.get() )
   {
     ..
     fu = async(checkStatus);
   }
    
}

非常感谢任何帮助。 谢谢!

2 个答案:

答案 0 :(得分:0)

是的,std::async 可以在线程内调用。

这可能是个好主意,也可能是个坏主意。

通常,您希望线程尽可能多地做事情,而不是等待事情。理想情况下,您应该将线程视为原始类型,并在构建于 std::threadstd::jthread 之上的结构解决问题,而不是直接使用它们。

答案 1 :(得分:0)

<块引用>

我们可以在线程内调用 async() 吗?

是的。事实上,除非程序运行在单进程系统(即某些嵌入式系统)上,否则您在程序中所做的一切都在线程内。