pthreads
並列処理で行っている作業の標準を探しています。IEEE 1003.1c「EEE Standard for Information Technology -- Portable Operating System Interface (POSIX(R)) - System Application Program Interface (API) Amendment 2: Threads Extension (C Language)」であることがわかりました。しかし、私がそれにたどり着くと、標準は「取って代わられました」と書かれていますが、彼らは何を言っていません(または、どこでそれを言っているのかわかりませんでした)。後継標準へのリンクを知っている人はいますか? ありがとう。
3 に答える
それは新しい版 (2008) に取って代わられました。これは、IEEE 1003.1-2008 または ISO/IEC 9945-2009 (十分な費用が必要) またはThe Open Group Single Unix Specification バージョン 7 (無料) として入手できます。3つとも同じ内容です。
質問で Linux にタグを付けたので、Jerry Coffin の回答に加えて、Linux pthreads のマニュアル ページを参照することをお勧めします。現在の Linux pthreads 実装 (NPTL) は、正確には POSIX 準拠ではありません。処理が異なる小さな詳細があります。
__thread
Linux やその他のオペレーティング システムで利用できるキーワード (スレッドごとの変数を指定するためのもので、 よりもはるかに簡単です。ここで GCCpthread_key_create()
について詳しく説明します)のような拡張機能もあり、将来のある時点で POSIX に含まれる可能性があります。 .
パフォーマンスが非常に重要な作業を行っている場合は、GCC、ICC、およびパススケール コンパイラで利用可能なアトミック ビルトインとベクトル拡張も参照することをお勧めします ( GCC ベクトル拡張、レガシー__sync
ビルトイン、C++11 スタイルの__atomic
ビルトイン、およびx86 固有のビルトイン)。これらはまだ標準化されていませんが、前述のコンパイラで利用でき、最近の__atomic
ビルトインは別として、少なくとも 10 年前から利用できます。個人的な経験から、これらの機能によりパフォーマンスが大幅に向上し (私が取り組んでいる従来の分子動力学シミュレーターで最大 40%)、Windows 以外のシステムとコンパイラーの間で移植性があることを証明できます。
はい、それは非常に古い文書です。おそらく必要なのは、完全なPOSIX 2008 仕様です。