2016-10-30 2 views
1

最近、Javaで利用可能なReentrantlockについて聞いたことがあります。しかし、私はopenmpとC++を使って優先順位キューのような並列データ構造を実装しようとしていました。オープンマントの再入門

openmpとC++に似たようなものがあるかどうか、あるいはpthreadsを使って実装できるのかどうか不思議でしたか?そのようなものが存在する場合は、その使用方法を教えてください。

答えて

1

OpenMP 4.5 standardの270ページのomp_nest_lock(PDF 279ページ)の説明を参照してください。

メタ質問は「なぜあなたはこれをやっていますか?」です。
なぜ単にTBB's Concurrent Priority Queueのようなものを使用していませんか?
その他の理由でOpenMPを使用する必要がありますか?
これはあなた自身の教育のためのものですか?
もしそうでなければ、より簡単な方法かもしれません(Apache Licensedです)。

(FWIW私はTBBを書いインテル、のために働くが、私はTBBの:-)は、OpenMPのではない仕事)

+0

私は実装は、OpenMPで行われるべきパラレルデータ構造上のラボプロジェクトを行っています。私は、 "マルチプロセッサプログラミングの技術 - モーリス・ハーリヒ&ニールシェイビット"(352〜360ページ)に記載されているロックベースのスキップリストメソッドを実装しようとしています。これは私にリエントラントロックを実装する必要がありました。既に実装されているライブラリへのリンクをくれてありがとう。しかし、状況がどうなっているのかを知り、並列アルゴリズムとデータ構造を作成する経験を得るために、私は同じことをしようとしていました。 – likecs

+0

この文をもう少し詳細に説明することができますか(上記の書籍のPg 272): "異なる競合グループで同じOpenMPロックを使用すると、不特定の動作が発生します。 – likecs

+0

あなたは既にこれが教育プロジェクトであると述べているので、標準で「競合グループ」の定義を調べるように指示するだけです:-)(学習の大部分は学習方法を学ぶことです! ) –