2017-12-02 2 views
0

Ich habe diesen Artikel über Multi-Core-Verarbeitung lesen:
https://blogs.msdn.microsoft.com/usisvde/2009/10/24/how-to-get-started-with-multi-core-parallel-processing-you-can-use/System.Threading.Tasks Äquivalent in UNIX und C++

In .NET Framework 4 gibt es ein Verfahren System.Threading.Tasks genannt ist, die die verfügbaren logischen Prozessoren verwalten . Gibt es eine Möglichkeit in C++ und UNIX ohne .NET Framework?

Mit dem gleichen meine ich vermeiden das überhört der threads.

+0

Werfen Sie einen Blick auf https://www.threadingbuildingblocks.org. –

+0

Werfen Sie einen Blick auf QtConcurrent, die für Unix Mac und Windows funktioniert http://doc.qt.io/qt-5/qtconcurrent-index.html – Marco

+0

Nizza! Danke Leute! –

Antwort

0

Nicht sicher, was genau die .NET tut, aber std::async/std::future ermöglicht parallele Warteschlangen von Aufgaben.

+0

Oh, sehr interessant! Ich denke, Sie haben Recht, es scheint, dass 'std :: async' in irgendeiner Weise auf' std :: thread :: hardware_concurrency' basiert. Danke für diese schnelle Antwort! –

0

Nein, es gibt keine direkte Gleichwertigkeit.

Std :: Async launches a new thread für jede asynchrone Aufgabe, d. H. Sehr langsam, wenn Sie viele kurze Operationen haben.

Sie können nach einer C++ - Threadpoolimplementierung von Drittanbietern suchen.

Oder Sie können zu einer höheren API wechseln. Ich habe positive Erfahrung mit OpenMP, es ist in den meisten C++ - Compiler enthalten, und unter der Haube hat es einen Thread-Pool mit einem Scheduler. Ich habe gehört Intel’s TBB ist auch gut.