2009-08-13 2 views
5

明らかに、私たちはそれを維持しますが、C++標準の保証があれば、どれくらい役立つでしょうか。std:threadがC++ Oxになるとpthreadsは廃止になる

新しい基準の出現と同期プリミティブ(ミューテックス、条件変数)はどうですか?

std :: threadとは対照的に、pthreadをマスターするのは難しいと考えていますか?

+4

奇妙な質問です。他の言語(Cのような)では、pthreadが使われます。 –

+5

* p * threadsはPOSIXスレッドです。 – AProgrammer

+6

オリジナルの質問を編集して完全に異なる質問をするのは良い考えではありません。 –

答えて

30

Cは遠ざかっていません。 POSIXは遠ざかっていません。 CでPOSIXのために書かれたマルチスレッドコードは、遠ざかっていません。だからpthreadsは遠ざかっていない。

std :: threadの多くの実装では、フードの下でpthreadsが使用されます。

"Pthreads APIは、ANSI/IEEE POSIX 1003.1 - 1995標準で定義されています。" - https://computing.llnl.gov/tutorials/pthreads/

+1

プラットフォーム別のライブラリを使用する場合と比較して、クロスプラットフォームを開発する方が簡単です... – vehomzzz

+1

人はまだC言語でプログラムし、C++ 0xはそれらを助けません。 – nos

+2

私はCについて話していません...私はC++について話しています – vehomzzz

0

プログラミングPOSIXスレッドには関係なく、技術的な比較の、それはすべての主要なプラットフォーム/ベンダーからでも合理まともなC++ 98のサポートを得るために十年の最良の部分を取りました。これだけで2020年にpthreadsが強くなることが保証されています。

+0

スレッドライブラリを実装するための作業のほとんどは、すでにboostによって行われています。また、TR1エミュレーションライブラリは、不完全なサポートのコンパイラ用にすでに用意されています。ライブラリの機能のサポートがすべての主要なコンパイラで利用可能になるまで、それほど長くなることはありません。そのような外部ライブラリが必要になるかもしれません。 – bdonlan

+2

G ++は既にスレッドライブラリを実装しています。実際は次のとおりです。http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00568.html – bdonlan

+1

Boostのサポートが役に立たない場合は、Microsoftのサポートの追加などそのコンパイラに。可能であれば、私はブーストコードを使ってそれらを見ることはできません。 私はすべてのコンパイラがすべてのコーナーケースに対してセマンティクスを得ることを含む、(ほとんど)完全なC++ 0xスレッドサポートを持つまで5年の​​期間を予期します。これには、事物が完全に特定されておらず、誰もまだ気づいていない、標準への修正も含まれる可能性があります。 – KeithB

9

pthreadをサポートするプラットフォーム上のC++実装はおそらくpthreadsの観点から言語機能を実装するでしょう - そうではありません。

10

POSIXはオペレーティングシステムの標準です。 C++ 0Xは言語標準です。 2番目のスレッドを持つことは、最初のものを廃止することはありません。両者の間にはコラボレーションがあり、第2のものが第1のものに実装可能である。 (また、POSIX用のC++インタフェースを持つ処理中の作業もあります)。

0

おそらく新しいコードのために、標準にあるものを使用することは正しい方法です。我々は、主要なコンパイラの実装がいかに強固であるかを待たなければなりません。しかし、現在動作していると仮定して、既存のコードをpthreadから変換することにはあまり効果がありません。これには、すでにpthreadsの経験が豊富な店舗で書かれた新しいコードが含まれています。

3

std :: threadには、優先順位のサポート、スレッドスタックのサイズの制御、スケジューリングポリシーの制御、またはプロセッサアフィニティの制御が含まれていません。

スケジューリングクラスと優先度は、リアルタイムシステムにとって重要です。プロセッサアフィニティとスタックサイズは、高性能システムにとっては本当に重要です。そのようなアプリケーションは、おそらくstd :: threadに加えて、std :: threadの代わりにネイティブスレッド機能を使用し続けます。おそらく、std :: threadと共に必要な機能を公開するベンダー拡張を介して。

+0

あなたは正しいです。私は[colaboration](http://en.cppreference.com/w/cpp/thread/thread/native_handle)でとにかく賭けるだろう。 – vinipsmaker

0

少なくとも正しいブーストスレッドの:

  • それは、スタックサイズパラメータ
  • をサポートしていません。それはsetpshared属性

をサポートしていませんので、ノー...行うにはいくつかのものがありますOS APIが時代遅れとみなされる前に。 (そしてBTWスレッドはpthreadsで実装されています)

関連する問題