3

LinuxとC++の新機能。Linux(ubuntuz)でのみ実行する必要があるアプリケーションを作成したいのですが、基本的な読み取り/書き込みロックを使用する必要があります。

「並行性機能」を提供するライブラリがいくつかあることを知りました。たとえば、ミューテックスを使用するには、少なくとも3つのオプションがあります。

  1. pthread_mutex_lock(pthread.h)

  2. boost :: mutex

  3. std :: mutex(mutex)

誰かがさまざまなアプローチの違いを説明できますか?

4

2 に答える 2

3

std::mutex標準ライブラリの一部です。すべてのC++コンパイラ/ライブラリベンダーは、好きな方法で自由に実装できます。Posixのライブラリ実装は、内部でpthreadを使用するだけでなく、たとえばWindowsライブラリはWindowsAPIプリミティブを使用する可能性が高くなります。

可能であれば、を使用しますが、std::mutexC ++ 11をまだサポートしていない場合は、pthreadミューテックスとロックプリミティブをラップする独自のSBRMクラスを作成するか、可能であればBoostを使用します(プロジェクトですでにBoostを使用している場合など)。 。とにかく、それはすべて同じことになるでしょう。

于 2012-07-30T07:13:56.453 に答える
3
  • pthreadsはC-APIであり、すべてのposix準拠システム(pthreadsの略Posix THREADS)で使用できます。

  • boost :: mutexは、「boost」ライブラリに依存するC ++のみのAPIです(Cコードでは使用できません。「boost」への依存関係を追加します)

  • Boostの多くの機能は、最終的にC ++標準ライブラリに含まれるようになります(スレッド化など)。C ++ 11では、std :: mutexがありますが、その最近の追加をサポートするのに十分な最近のコンパイラが必要になります。たとえば、アプリケーションを古いディストリビューションにバックポータブルにしたい場合は、それを避けたいと思うかもしれません。

于 2012-07-30T07:14:13.437 に答える