UNIX.C ++中的System.Threading.Tasks等效

时间:2017-12-02 09:04:24

标签: c++ multithreading unix multicore

我读过这篇关于多核处理的文章:
https://blogs.msdn.microsoft.com/usisvde/2009/10/24/how-to-get-started-with-multi-core-parallel-processing-you-can-use/

在.NET Framework 4中,有一个名为System.Threading.Tasks的方法可以管理可用的逻辑处理器。在没有.NET Framework的情况下,有没有办法在C ++和UNIX中做同样的事情?

同样的意思是避免线程被无意中听到。

2 个答案:

答案 0 :(得分:1)

不,没有内置的直接等价物。

每个异步任务的

std :: async launches a new thread,即当你有很多短操作时非常慢。

您可以查找第三方C ++线程池实现。

或者您可以切换到某些更高级别的API。我对OpenMP有积极的经验,它包含在大多数C ++编译器中,并且它有一个带调度程序的线程池。我听说Intel’s TBB也很好。

答案 1 :(得分:0)

不确定.NET的功能,但std::async / std::future允许并行排队任务。