【发布时间】:2019-01-08 13:21:28
【问题描述】:
当在除 Main 函数之外的其他函数中使用它时,我对 st::async 有一些问题, 假设,我有像流动这样的功能:
void printData()
{
for (size_t i = 0; i < 5; i++)
{
std::cout << "Test Function" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
void runningAsync()
{
auto r = std::async(std::launch::async, test);
}
int main()
{
runningAsync();
std::cout << "Main Function" << std::endl;
}
这段代码的输出是:
Test Function
Test Function
Test Function
Test Function
Test Function
Main Function
这样不好,主线程等待其他线程结束。
我希望 runningAsync() 函数在其他线程中运行,同时在屏幕上打印主线程中的“Main Function”,这可以通过 std::thread 实现。
这种方式可以同时运行这个函数吗(并发)?
【问题讨论】:
-
源代码不会按原样编译。使用 printData 更改测试,反之亦然。
标签: multithreading c++11 stdasync