concurrency

    2

    1答えて

    1つのユニークな項目だけを同時に処理できるようにするには、同期メカニズムが必要です。そこで、Monitor.Enterを使用して、同じアイテムの他の同時実行をブロックしました。 ここでは、論理を検証するための私のコードとユニットテストのカットバージョンです。 私のコレクションのいくつかのアイテムは、Monitorからロックを取得できることがわかります。アイテムが取得されたときにロックを解除しないた

    2

    1答えて

    データをいくつかのコレクションに連続的に挿入するバックグラウンドスレッドを生成するプログラムを作成しようとしています。同時に、私はstdinから入力を受け取り、その入力がスレッドが動作しているコレクションに入っているかどうか確認したいと思います。しかし、これが原因所有のものでは動作しません use std::collections::HashSet; use std::thread; fn

    2

    1答えて

    私はアプリケーション内での割り当てを防ぐために、(Camerons excellent)readerwriterqueueを使用してスレッド間でデータを移動する単純な循環バッファを実装しました。 using ElemPtr = std::unique_ptr<int>; moodycamel::ReaderWriterQueue<ElemPtr> emptyQueue(10); moodyca

    0

    1答えて

    を消費します。 のは、私がトリガーごとに1秒するタスク(tasks)のリストがあるとしましょう。 schedulerか何かで行うことができる 。すべてのタスクのすべてのn番目の完了時にトリガすべき 今、このストリームの2人の消費者、があるが、 C1は、すべてのタスク C2の完了時にトリガする必要があります。 (また、n秒ごとことができます)ここではいくつかのサンプルコードです。現在、それは繰り返す

    3

    1答えて

    このコード import Control.Monad import Control.Concurrent import Control.Concurrent.STM import Control.Concurrent.STM.TChan main = do ch <- newTChanIO forkIO $ consumer ch 0 forkIO $ co

    1

    1答えて

    私はConcurrentHashMapに定期的に送信する必要のある変更をいくつか蓄積しています(ある種類の複製の場合)。変更に関しては、キーに関する最新の値のみが重要です。 スナップショットを取得して削除する必要があります。スナップショットはアトミックである必要はなく、各エントリが操作中のある瞬間に元のマップの状態を反映していれば十分です。 重要な点は、結果に存在し、最新のエントリのみが元のマップ

    1

    1答えて

    私はPikaと連携していくつかのキューを消費するマルチプロセスとマルチスレッドシステムを持っています。 システムがマルチスレッドコンシューマのシングルプロセスで動作する場合、正常に動作しますが、マルチプロセス(生成されたプロセス)で動作する場合、コンシューマによってはキューから重複データを取得することがあります。 どのように消費者は、キューからデータを取得する際、他の消費者は再びそのキューからその

    0

    1答えて

    クロニクルキュー(SingleChronicleQueue)を使用してメッセージを記録する準備をしています。プロトタイプは今すぐ動作しています。しかし、私たちにはいくつかの問題があります。 読者はメッセージを変更できますか?私たちはクロニクルマップを使用して、再起動後に重複したメッセージを削除するために読み取ったインデックスを記録します。これがうまくいかない場合は、読者側で読んだメッセージにタグを

    0

    1答えて

    データベースシステムのチュートリアルでは、教科書データベースシステムの概念のように、Buffer Pool/Buffer Manager/Pager /というモジュールがあります。私はそれについて多くの詳細を見ていないので、私はあなたがどのようにの同時実行を増やすのですか? たとえば、Trieインデックスがあるとします。バッファプールなしでトライの内部でページングを行うと、複数のスレッドでリーフノ

    1

    1答えて

    私は無害多くfuture Sを観察する方法を見つけようとしています。これにより、N個のスレッドをブロックせずにN futureを待つことを意味します。 私はcore.asyncライブラリは、それがブロック操作でスレッドをブロックしない方法で構築するのではなく、それを駐車し、スレッドを再利用していることがわかります。それはDEREFの場合である、またはそれは<!とalts!でのみ動作しますか?