問題タブ [libcds]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - LibCds: マイケル ハッシュマップと分割注文リスト
私はlibcdsを使用しており、Michael Hash Map と Split order list が実装されています。
ここのドキュメントから収集した情報に基づいて、それらをどのように実装したかを示します。
以下が含まれます:
コード:
コード:
と:
次のように呼び出して構造を開始します。
ただし、CDSSplit が開始されたとき、または Michael が最初の挿入を実行したときに、セグメンテーション違反が発生します。
ライブラリは警告なしで正常にインストールされ、他のハッシュテーブルを使用してもエラーは発生しません。
助けてくれてありがとう
(ライブラリのディスカッション ページにも投稿されましたが、あまり詳細ではありませんが、そこにはあまり存在していないようです。そこに何かが投稿された場合は投稿します)
コンパイル フラグ:-std=c++0x -O3 -msse2 -m32 -DNDEBUG -DINTEL -g -D_REENTRANT -lrt -pthread -fno-strict-aliasing -l cds -l tbb -lllalloc
GDB 出力:
c++ - 「std::mapwithmutexes」と「libcdsmaps(Michael Hashmap and Split Order List)」の並列挿入、検索、消去の間に速度テストはありますか?
したがって、各スレッドが少なくとも3種類の並行マップ(std :: map(いくつかのミューテックスを含む)と)で挿入、検索、削除を行う並列(100から10000の並列スレッドなど)の速度テストを実際に見たいと思います。libcds(並行データ構造) ..。
したがって、たとえば、そのような比較がまだ存在しない場合は、作成を手伝ってください。
直接関連: LibCds:MichaelHashmapとSplitOrder List
私たちが持っていると想像してください
N個のスレッドを作成し、各スレッドがcreateを呼び出し、deleteを見つけるようなテストを作成する方法よりも...何かを書き始めましたが、boost1.47.0でコンパイル可能なコードになりました...
c++ - cds ライブラリ: michael_deque により、カスタム型の派生型をプッシュ バックするとクラッシュが発生する (リリース モードのみ)
デフォルトの最適化設定 (/O2) で VS2012 を使用していますが、この問題はリリース モードでのみ存在します。
michael_deque
(標準 GC を使用した) および (抽象) type へのポインターを使用するコードがいくつかありますT
。
から派生した型へのポインターをプッシュバックしようとすると、 の関数T
を終了するときにアプリケーションがクラッシュします。push_back()
michael_deque
問題はこの特定の type に正確に依存しているようですT
。なぜなら、ダミーの class を作成し、foo
それをクラスで派生させbar
(そしてコンストラクターで何かを出力して最適化されないようにする)、そしてnew bar()
michael_deque にプッシュバックしてもクラッシュしないからです。
問題のクラスT
は次のとおりです。
エラーは最小限のプログラムで再現できます (私と同じ方法でこれを実行できる環境がある場合はstd::atomic<unsigned int> taskIDCounter
、Task クラスがそれを見ることができる場所に置くだけです):
これの原因は何ですか?最適化問題で問題を引き起こすクラス Task で未定義のことをしますか?
c++ - std::string で libcds SplitListMap を使用する
std::string
にマップされるハッシュマップを作成しようとしましたがstd::string
、これまでのところ次のコードを使用しました:
これは libcds のドキュメントに基づいています。しかし、ハッシュマップを正しく使用しているかどうかはわかりません... SplitListMap の基になるリストを説明する論文によると、キーのハッシュでソートする必要がありますが、ドキュメントでは std::less<TKey>
マイケルリストの順序を指定するために使用することを提案しています。の使い方はstd::less<std::string>
正しいですか?
c++ - C++ の並行セット?
以下を置き換えるために、C++ でロックフリーのデータ構造を探しています。
セットは、最大で O(logN) の複雑さをサポート.insert()
し.size()
、イテレータを持ち、カスタム コンパレータで順序を維持できる必要があります。ConcurrentSkipListSet
基本的に、Javaの と同じことを行います。理想的には、プラットフォームに依存しない必要があります。
CDS: http://libcds.sourceforge.net/doc/cds-api/modules.htmlを見ていますが、どのデータ構造が目標を達成できるかわかりません。ドキュメントには、一部のデータ構造について実際には複雑さがありません。
どんな提案も素晴らしいでしょう、ありがとう!