問題タブ [lock-free]
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++ - C++ロックフリーのテンプレート化されたObjectPool
それらは存在しますか?
*明確にするために追加:
テンプレートを使用してC++言語で記述されたロックフリー(スレッドセーフで、スピンロックまたは他の軽量同期を実装する可能性があります)ObjectPool(http://en.wikipedia.org/wiki/Object_pool_pattern)を実装する使用可能なライブラリはありますか?
c++ - Fober et alロックフリーFIFOキュー:複数の消費者と生産者?
Fober et alの論文http://nedko.arnaudov.name/soft/L17_Fober.pdfに示されているFIFOキューは、複数のコンシューマーであり、FIFOキューを生成するのではないかと思いました。そうでない場合、文書化された複数のコンシューマーおよびプロデューサーFIFOキューの中で最も適切なものはどれですか?
ありがとう
concurrency - メモリバリアとインターロック操作
私はメモリバリアの理解を深めようとしています。弱いメモリモデルがあり、デッカーのアルゴリズムを適応させたとします。メモリバリアを追加することで、弱いメモリモデルで正しく動作させることは可能ですか?
答えは意外とノーだと思います。その理由は(私が正しければ)、メモリバリアを使用して読み取りが別の読み取りを超えないようにすることはできますが、読み取りが古いデータ(キャッシュ内のデータなど)を認識しないようにすることはできないためです。したがって、クリティカルセクションが(CPUのキャッシュごとに)ロック解除された過去のある時点を確認できましたが、現時点では、他のプロセッサがそれをロックされていると見なす可能性があります。私の理解が正しければ、複数のプロセッサ間でメモリ位置の値が同期して一致するように、一般にテストアンドセットまたはコンペアアンドスワップと呼ばれる操作を使用する必要があります。
したがって、弱いメモリモデルシステムがメモリバリアのみを提供することはないと正しく期待できますか?システムが有用であるためには、テストアンドセットやコンペアアンドスワップなどの操作を提供する必要があります。
x86を含む一般的なプロセッサは、弱いメモリモデルよりもはるかに強力なメモリモデルを提供していることを認識しています。弱いメモリモデルに焦点を当てて議論してください。
(デッカーのアルゴリズムが適切でない場合は、可能であれば、メモリバリアが正しい同期を正常に達成できる別の相互排除アルゴリズムを選択してください。)
algorithm - ロックフリースキップリストを実装する方法
ロックフリースキップリストを実装する必要があります。論文を探してみました。残念ながら、私が見つけたのは、ロックフリーの単一リンクリスト(多くのフレーバー)だけでした。しかし、ロックフリースキップリストを実装するにはどうすればよいですか?
delphi - ロックフリーコンテナを探しています
delphi 2007で使用できるロックフリーコンテナ(リスト/キュー/スタック...)を探しています。ありがとうございます。
java - スレッド ライブラリのロックフリー実装
私は、スレッド ライブラリの実装に使用できるアルゴリズムとデータ構造を詳述するいくつかの公開された論文を調べてきました。同じものの既存の実装を表示するためにオンラインで検索しましたが、LFThreads (ソースコードではなくドキュメントのみ) しか見つかりませんでした。
ロックフリーのスレッド ライブラリに取り組んだり、使用したりしたことのある人はいますか? そのソースを調べて、それがどのように正確に使用されているかの例をいくつか見てみたいと思います。
java - マルチプロセッサプログラミング:ロックフリースタック
次回の並行システム試験の準備として、教科書「マルチプロセッサプログラミングの芸術」からいくつかの質問に答えようとしています。1つの質問は私を悩ませています:
演習129: LockFreeStackオブジェクトのプッシュとポップの両方に同じ共有BackOffオブジェクトを使用することは意味がありますか?EliminationBackOffStackで、空間と時間のバックオフを他にどのように構成できますか?
この質問は私を悩ませます。最初に頭に浮かぶのは、バックオフオブジェクトが行うのはプロセスを待機させることだけなので、意味がないということです。共有してみませんか?質問の2番目の部分は完全に私を避けており、どんな助けでも大歓迎です。
LockFreeStackのコード:
multithreading - IntelCPUでのアトミックcmpxchg命令の平均レイテンシ
さまざまなIntelプロセッサのlockcmpxchg命令の平均レイテンシに関するリファレンスを探しています。私はそのトピックに関する良い参考文献を見つけることができず、どんな参考文献も大いに役立つでしょう。
ありがとう。
concurrency - ロックフリーと障害物フリーの違いは何ですか?
私はTransactionalMemory(TM)について読んでいますが、読んでいる論文の1つに[ 1 ]と書かれています。
実際、過去10年間でSTM研究を再活性化したのは、障害物のないDSTMとロックのないFSTMの2つの非ブロッキングアルゴリズムでした。
ロックは障害物を意味するという印象を受けました。どうやら、私は間違っていた...
「ロックフリー」と「障害物フリー」という用語の違いは何ですか?
c++ - マルチスレッド アプリで、アトミック ビルトインを使用して time_t 値を設定/表示するにはどうすればよいですか?
高度にスレッド化されたアプリがあります。
このアプリのスレッドは、共有メモリ マップ ファイルから読み取ります。彼らがそれに書き込むことはないと想定できます。
ここで必要なのは、リーダーがファイルからの読み取りを終了したときに共有タイムスタンプを更新するように拡張することです。すなわちtime_t last_access_time = time(NULL);
これは非常に頻繁に発生するため、可能であればロックのない実装を探したいと思います。
last_access_time
G++ でアトミック ビルトインを使用して現在の値を設定または確認するにはどうすればよいですか?
たとえば、これらのクラスメンバーがあり、_last_access_time
初期化されているとしますtime(NULL)
ロックフリーにすることは可能ですか?