問題タブ [system.threading.channels]
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# - オブジェクトの 2 つのコレクション間での論争の的となる並行作業
2 つのコレクション間の作業を非同期かつ並列にシミュレートしようとしています。顧客の ConcurrentQueue とワーカーのコレクションがあります。ワーカーがキューから顧客を取得し、顧客に対して作業を実行し、完了したらすぐに別の顧客を取得する必要があります。
私は、ワーカーのコレクションが顧客に対してアクションを実行するイベント ベースのパラダイムを使用することにしました。顧客が完了したときに起動するイベント ハンドラーを保持するユーザー。うまくいけば、DoWork メソッドをもう一度起動して、ワーカーを並列化してキューから顧客を取り出すことができます。しかし、OnCustomerFinished() で顧客を DoWork に渡す方法がわかりません! 労働者は明らかに顧客の列に依存すべきではありません
// 編集 - これは顧客クラスです
c# - 2 つ以上のタスクを並行して実行している間、変数値を保持する
私はタイマーを使用しており、問題を解決するための最初のステップとしてスレッドを実装しました。30 秒ごとに参照を送信する必要があり、この参照はボタンがクリックされるたびに作成されます。だから私は次のコードを持っています:
以下は MyReference クラスです。
問題を強調するために編集します。
問題は、最新の値のみを送信しsomeReference
、以前の値を無視することです。someReference の最新の値に置き換えずに、30 秒後に各値を送信するにはどうすればよいですか?
c# - チャネルによる状態管理
現在、マルチスレッド状態の同期を管理するために、Channels コンストラクト (go ルーチンなど) を使用しています。
そのチャネルを使用して状態管理のさまざまな操作を処理する方法のベスト プラクティスについて知りたいです。1 つの操作は取得であり、別の操作はディスクからその状態を再ロードすることです。
単一のチャネルを使用して複数の操作をサポートし、それらの操作のパラメーターをサポートすることに、かなりの摩擦と複雑さを感じています。具体的には、さまざまな戻り値の型と、そのチャネル内の各操作決定パス内でのキャストをサポートします。
誰かがいくつかの代替方法を推奨できますか、それともこの概念で十分ですか?
次に例を示します。