lock-free

    2

    1答えて

    ここにシナリオがあります。ボブは作家であり、アリスは読者です。ボブは物事を書いて、アリスはそれらを読みます。規則は次のとおりです。 1)ボブは、アリスが読み込み中であるかどうか(読み込みは書き込みをブロックしない)を書き込むことができます。 2)ボブが書き込みを行っているとき、アリスは読み出すことができません(書き込みは読み込みをブロックします)。 3)アリスが読書を終えると、ボブが読んで書いたか

    1

    1答えて

    ロックフリーのプログレス保証を満たすアルゴリズムまたはデータ構造の難点の1つは、ダイナミックメモリ割り当てです。mallocまたはnewのようなものは、ポータブルな方法でロックフリーであることが保証されていません。しかし、mallocまたはnewの多くのロックフリー実装が存在し、ロックフリーアルゴリズム/データ構造を実装するために使用できるさまざまなロックフリーメモリアロケータもあります。 しかし

    -1

    1答えて

    アクションブックのAnthony Williamsの同時実行性では、分割参照カウントを使用してロックフリースタックを実装しています。ヘッドノードの初期ロード後。ここでは、以下のコードにリストされているメソッド呼び出しincrease_head_countを使用します。 counted_node_ptr old_head = head.load(); increase_head_count(old

    0

    1答えて

    私はウィキペディアでは、実際の本の中で並行処理でABAの問題を調査していると私はABAの問題の根本原因を理解するとして、私は前にあったようにそのアルゴリズムでは、我々は同じような状態を確認することをpost 次読んだことがあるが、アルゴリズムがその状態を意味します手つかずだった。スタックと 例: create new stack node(save to `newNode` variable)

    1

    1答えて

    this fileで、boost::lockfree::detail::freelistクラスは、free listを使用して、ロックフリーのデータ構造(キューなど)のストレージを管理するために使用されます。 deallocate_implの方法は、ノードを空きリストに戻すことでノードを解放します(解放されたノードが空きリストの新しいヘッドになり、古いヘッドを置き換えます)。このメソッドはスレッド

    0

    1答えて

    私はWinAPI InterlockedPushEntrySList をテストしていますが、私のテスト結果はちょっと変わっています。 私は基本的にLockFreeで考えていましたが、プッシュ速度はスレッドが増えるほど速くなります。 1つのスレッドが少なくとも成功するためです。スレッドとしての私のテストで InterlockedPushEntrySListの速度が遅くなります。 私のテストは非常に簡

    0

    1答えて

    私の質問はとても簡単です。 なぜインターロックされたマルチスレッドのインクリメントが1スレッドよりも遅いのですか? キャッシュラインバウンシング(キャッシュライン競合)のためだけですか? また別の理由がありますか? 私はIntel i7、visual studio 2012を使用しています。 インターロック付きインクリメント機能を使用してカウント数をテストしました。テスト結果はそれでした。 1スレ

    0

    1答えて

    Containerの値がintの値のセットと、値が有効かどうかを示す各値のフラグを保持しているとします。無効な値はINT_MAXとみなされます。最初は、すべての値が無効です。最初に値にアクセスすると、値はINT_MAXに設定され、そのフラグは有効に設定されます。 struct Container { int& operator[](int i) { if (!isValid[i

    4

    1答えて

    std::atomicを見てみると、それはデフォルトの専門分野は、私が読んだ: これらの専門分野は、標準的なレイアウトを持って、自明なデフォルトコンストラクタ、および些細なデストラクタ。 Iはまたis_lock_freeため読み出す: std::atomic_flag以外のすべての原子タイプではなくロックフリー 原子CPU命令を使用するよりも、 ミューテックスまたは他のロック操作を使用して実施する