1. ホーム
  2. c++

[解決済み] C++11 std::threadsとposix threadsの比較

2022-04-22 11:38:44

質問

なぜ、どちらか一方を選ぶべきなのでしょうか? 技術的な違いは何ですか? std::thread はクラスなのか?

解決方法は?

もし、多くのプラットフォームでコードを実行したいのであれば、Posixスレッドを使用することをお勧めします。これらはほとんどどこでも入手可能で、かなり成熟しています。一方、Linux/gccしか使わないのであれば std::thread より高い抽象度、優れたインターフェイス、そして他の C++11 クラスとうまく連携することができます。

C++11の std::thread クラスは、残念ながら、C++11 が利用できるように見えても、すべてのプラットフォームで(まだ)確実に動作するわけではありません。たとえば、ネイティブの Android では std::thread やWin64では動作しないか、深刻なパフォーマンスボトルネックがあります(2012年現在)。

良い代替品は boost::thread - と非常によく似ています。 std::thread (実際、同じ作者によるものです) そして、確実に動作します。しかし、もちろん、サードパーティのライブラリから別の依存性を導入しています。


編集部:2017年現在 std::thread は、ほとんどがネイティブのAndroidで動作します。一部のクラス、たとえば std::timed_mutex はまだ実装されていません。