【问题标题】:System.Threading.Tasks equivalent in UNIX and C++UNIX 和 C++ 中的 System.Threading.Tasks 等效项
【发布时间】:2017-12-02 09:04:24
【问题描述】:

我读过这篇关于多核处理的文章:
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 中做同样的事情吗?

同样,我的意思是避免偷听线程。

【问题讨论】:

标签: c++ multithreading unix multicore


【解决方案1】:

不,没有内置的直接等效项。

std::async launches a new thread 用于每个异步任务,即当您有许多短操作时非常慢。

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

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

【讨论】:

    【解决方案2】:

    不确定 .NET 究竟做了什么,但 std::async / std::future 允许任务并行排队。

    【讨论】:

    • 哦,很有趣!我认为您是对的,似乎std::async 在某种程度上基于std::thread::hardware_concurrency。感谢您的快速答复!
    猜你喜欢
    • 2011-03-18
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2010-10-20
    相关资源
    最近更新 更多