11

Windowsのスレッドサポートを許可するためにpthreads-win32を使用しています。

pthreads を使用するクロスプラットフォーム プロジェクトがあり、さまざまなコンパイラとさまざまな OS バージョンの Windows で動作するようにしたいと考えています。

少なくとも、ドキュメントによると、 pthreads-win32 は MSVC で動作し、提供されている MSVC ビルドでも動作するはずです。

ただし、ライブラリが MSVC-2008 などの最新の MSVC コンパイラでテストされているかどうか、および 64 ビット ウィンドウでサポートされているかどうかはわかりません。

あなた自身の経験から、このライブラリの問題を認識していますか?

  • MSVC8、MSVC9、MSVC10 に問題はありますか?
  • Windows x86_64 に問題はありますか?
  • Windows Vista/Windows 7 に問題はありますか?

ノート:

  • Boost.Thread の使用を推奨しようとさえしないでください。私は興味がありません。また、Boost.Thread ライブラリには精通しています。
  • Win32 API (RW ロック、条件変数などがない) を使用してホイールを再発明することには興味がありません。
  • MSVC-2008 と MinGW GCC-4.3 を使用してプロジェクトをコンパイルし、現在コンパイル済みの pthreads DLL を使用して簡単に単体テストを実行することができました。

pthreads-win32 の制限を知る必要があるだけです。

4

3 に答える 3

8

まあ、paxdiabloは明らかにそれをここに要約しています。しかし、このライブラリでの過去の経験から、ここにいくつかのことを追加できます。

まず、MSVC 2008 でライブラリの関数のサブセットをまったく問題なく使用できました。

次に、私の同僚の何人かは、x86_64 (MSVC2008 と MinGW を使用) でそれを実行しています。ベータ テストと QA テストを何度も繰り返した後も、問題は発生していません。私は自分でテストしていませんが、これについては確信が持てません。

ですので、見た目からすれば、使用に適しているのかもしれません。ここでの唯一の注意点は、何か問題を見つけた場合、あまり活発でないメーリング リストに翻弄されることです (または、ソース コードなどで手を汚したくなるかもしれません)。

于 2010-05-17T12:36:27.470 に答える
2

はっきりとは言えませんし、これはあなたが聞きたいことではないかもしれませんが、最後のリリースが2006年のものであることを考えると、最新のコンパイラでこれを使用することには非常に注意が必要です。それうまくいくかもしれませんが、それを実行するのはおそらくあなた次第です。CygwinとMinGWで動作させることについては多くの議論があるようですが、MSVCにとってはほとんど貴重ではなく、MSVC2005以外に見つけることはできません

また、CVSアーカイブを調べると、昨年更新された貴重なファイルはほとんどありません(ほとんどは2〜5年前です)。1年未満の日付のカップルには「コメントとコードスタイルの変更」という説明があり、この製品の肉はしばらくの間活発に開発されていないと私は信じています。

今、私は間違っているかもしれません。これは非常によく書かれた安定した製品ですが、私の内面の性質は、それが道端にある何億もの優れたアイデアの1つであると結論付ける可能性が高くなります。

そして、メーリングリストを見ると、2010年の最初の5か月に投稿されたメッセージは7つだけで(最初のメッセージは4か月間未回答)、2009年全体では59に過ぎません。非常に活気のあるサポートコミュニティのようには思えません。

64ビットWindows用のパッチがあるようです( 2010アーカイブのここを参照)が、これも2月以降未解決の問題があるようで、MinGWのサポートについてのみ言及しています。

...このパッチ(少しラフで、ここでCROSSを許可するには、最終的なクリーンアップとテスト実行makefileの拡張が必要です)により、x86_64-pc-mingw32ターゲット用にpthreadをビルドできます。

これは、ミッションクリティカルなソフトウェアに使用するようなものではありません。

そして、あなたが車輪の再発明に興味がないと言ったことは知っていますが、より基本的なプリミティブからマルチリーダーロックと条件変数を非常に簡単に実装できます-書き込み不足の問題を解決するマルチリーダースキームさえありましたほぼ私に特許を取得した方法で(私がソフトウェア特許に同意するわけではありませんが、私の雇用主はそれらが価値があると主張しています)。

そして、あなたが持っている唯一のホイールのスポークの半分が欠けていて、ひどく曲がって形が崩れている場合は、再考する必要があるかもしれません:-)

いずれにせよ、VistaとServer2k8は、条件変数スリムなリーダー/ライターロックの両方を導入しました。スレッドローカルストレージは、Win2k以来存在しています。それでもXPをサポートする必要がある場合は役に立たないことはわかっていますが、将来を見据えています。

また、移植性を「Windowsのみ」と定義しているようで、必要なすべての機能が現在のバージョンで利用できるため、pthreadを使用することに利点があるかどうかはわかりません。POSIXへの移植性が必要な場合はそうですが、ここではそうではないようです。

于 2010-05-12T06:00:42.157 に答える
0

Intel の Thread Building Blocks を誰も提案していないことに驚きました。それらは非常に活発で、事実上すべてをサポートしています。最新のリリースは 2 週間以内にリリースされており、準拠したコンパイラを使用する場合は C++0x の機能を備えています。

http://software.intel.com/en-us/intel-tbb/#sysreq

于 2010-05-17T12:49:34.307 に答える