C++11 std::thread vs Posix スレッド 質問する

C++11 std::thread vs Posix スレッド 質問する

std::thread実際には、なぜどちらか一方を優先する必要があるのでしょうか?クラスであること以外に技術的な違いは何ですか?

ベストアンサー1

多くのプラットフォームでコードを実行したい場合は、Posix スレッドを使用してください。Posix スレッドはほぼどこでも使用でき、非常に成熟しています。一方、Linux/gcc のみを使用する場合は、std::threadまったく問題ありません。抽象化レベルが高く、インターフェイスが非常に優れており、他の C++11 クラスとうまく連携します。

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

良い代替品はboost::thread、非常に類似しておりstd::thread(実際には同じ作者によるものです)、確実に動作しますが、もちろん、サードパーティのライブラリからの別の依存関係が導入されます。


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

おすすめ記事