2011-08-03 10 views
7

可能性の重複:
PThread vs boost::thread?Boost ThreadライブラリまたはPthreadsには、どのような違いがありますか?

私はマルチスレッドされたものを理解し、時間以降のpthreadライブラリプログラミング例を使ってきました。遅れて、私はインターネット上のBoostスレッドライブラリに出くわしました。興味がありました。誰が二人の間の顕著な違いは何ですか? Boostから追加の特権がありますか?もしそうなら、それらは何ですか?私の経験では、事前に

おかげで、 Shraddha

+0

@code猿ロック解除用

  • RAIIサポートスレッドIDを格納するためのポータブルな方法:ありません正確に重複しますが、ほとんどの答えは適用することができますがこの質問に。 – akappa

  • 答えて

    2

    ブースト::スレッドライブラリは非常に密接pthreadsのに結びつける機能を備えています。 boost :: threadライブラリの外部にありますが、boost :: interprocessで提供されているようなセマフォのような、依然としてboostで利用可能なものがいくつかあります。

    私が見てきた主な利点は、クロスプラットフォームコードを簡単に書くことができることです。 boost :: threadライブラリはさまざまなオペレーティングシステムのプリミティブとのクロスプラットフォームインタフェースレイヤとして実装されているようですので、boost :: threadで利用できる重要な追加機能はありません実際のオペレーティングシステムAPI

    しかし実際には、Win32での私の経験から、私が本当に同等のものを見つけることができなかったWindowsの基本的な機能がいくつかあります。 boost :: threadとpthreadライブラリ。

    Boost.ThreadがポータブルC++コード内の共有データと複数の実行スレッドの使用を可能にします::documentation of Boost.Threadから

    0

    ポータブル

    のpthreadが属する何かがありますあなたのコードであなたのコードを使用しているなら、あなたのコードはWindowsに移植することはできません。

    C++

    pthreadのは「C」ライブラリである一方でBoost.Threadは、C++ライブラリです:アプリケーションがC++で書かれている場合は、例えば入れて(あなたのコードを簡素化することの利点を取ることができますThread Movable概念を理解しているコンテナ内のオブジェクト)。

    +0

    @celavek:そうですか? – akappa

    11

    boost :: threadの設計はpthreadsの影響を強く受けましたが、もちろんCライブラリの代わりにC++ライブラリのスタイルになっていました。私の心にはいくつかの違いがあります。私は、これが徹底的な違いのリストであると主張していない。

    物事のpthreadsはその後押しを持っている::スレッドが不足している:あなたはブーストを使用する場合

    は::あなたが基礎となるpthread_t(または pthread_mutex_tなどをつかむことができますスレッド)native_handle()というメンバーの 関数を呼び出して、boost :: threadによって直接 に提供されなかった機能を取り戻すために使用します。

    • 設定スケジューリングパラメータ(pthread_attr_setschedparam
    • スタッククエリ、操作(pthread_attr_getstacksize
    • ミューテックス/優先度クエリ、操作(pthread_mutex_getprioceiling

    物事後押し::スレッドがあることがありますpthreadsには欠けている:

    pthreadでは次のことが可能です(すべてboost :: thread がpthreadに実装された後)。しかし、これらのことを行うためには、明確で直接的なAPIはありません( )。スレッドハンドル、および「任意のスレッドではない」

  • 任意の引数を持つ任意のファンクタでスレッドを起動する機能を表すことができるスレッドID
  • スレッドIDの

    • 異なるタイプ
    • 任意のロック可能なタイプに
    • 待つように条件変数のための任意の引数
    • と能力を任意のファンクタを「一度呼び出す」する機能デッドロック
    • せずに、一度に複数のミューテックスをロックする機能が連想コンテナにミューテックス
    関連する問題