lock-free

    11

    4答えて

    私は、単一のプロデューサ - 単一のコンシューマのためのいくつかの実装を見出しましたが、複数のプロデューサ - 単一のコンシューマのためのものは見つかりませんでした。 Delphiでは「複数のプロデューサ - 単一のコンシューマ」のロックフリーキューが存在しますか?

    3

    1答えて

    単純なポインタインクリメントアロケータ(彼らは正式名称を持っていますか?)私はロックフリーのアルゴリズムを探しています。些細なことですが、私の実装が正しいかどうかについてのフィードバックを得たいと思います。 ないスレッドセーフな実装: byte * head; // current head of remaining buffer byte * end; // end of remaining

    16

    4答えて

    x86および他のアーキテクチャでは、ロックフリーのデータ構造を書くための特別なアトミック命令(lock、cmpxchgなど)が用意されています。しかし、より多くのコアが追加されるにつれて、これらの命令が実際にはバックグラウンドで行う必要がある作業が増えていくように見えます(少なくともキャッシュの一貫性を維持するためには?)。今日、デュアルコアシステムで原子アイドルが100サイクルかかる場合、将来の

    2

    2答えて

    私はこれを見つけた:一見 http://www.emadar.com/fpc/lockfree.htm それが正常に見えます。誰もそれを使用していますか?あるいは、すでに誰かがそれを見て、それを使えないと思ったでしょうか?

    0

    1答えて

    ロックフリーキューと並行キューに関するハーブ・サッターの記事は、ここでかなり言及されています。しかし、私はC++ 0xコンパイラを持っていません...だから、誰かがコードを翻訳して、いくつかのブーストライブラリや何らかの "アトミックな"操作を提供するものがあるのだろうかと思います。 誰もがミューテックス/ condition_variable例を提供できる場合、私はここで は私が参照してる記事.

    7

    5答えて

    私は以下の記事を見つけました:Use GCC-provided atomic lock operations to replace pthread_mutex_lock functions GCC Atomic Builtinsを指しています。 この記事では、pthread同期ツールの代わりにGCC原子組み込み関数を使用することを提案しています。 これは良い考えですか? PS。 mysqlの投稿は

    17

    8答えて

    カーネル側でメモリバリアを設定するのは簡単です:Linuxカーネルヘッダのおかげで、マクロmb、wmb、rmbなどは常に存在します。 これはユーザー側でどのように行うのですか?

    3

    5答えて

    コレクションのコレクションを作成する必要があります。コレクションは、アイテムとルックアップアイテムを追加するために複数のスレッドによって呼び出されます。追加されたアイテムは削除されません。現在、要素を追加しているうちにコレクション全体をロックする必要があります。それをロックフリーにする方法がありますか?または、私が使用できるより良いデータ構造またはパターンがありますか?ここ は、私のコードの簡易版

    1

    2答えて

    Sparcの64ビットSolarisでは、load-link/condition-storeを使用してatomic_cas_64()関数呼び出しを実装していますか? もしそうでなければ、SolarisはユーザーモードのCコードでll/scを利用することを提案していますか?

    3

    3答えて

    だから; v9準拠の64ビットSPARC CPUには、cas命令があります。これは、単一ワード長値で動作します。 私はまた、casx命令のWeb参照にも見ましたが、それ以上のことは何も見つかりません。 私は疑問に思っています - これはダブルワード比較とスワップですか? それ以外の場合、一般的な質問は次のとおりです。ダブルワード比較とスワップがありますか?