問題タブ [concurrent-queue]
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# - スレッド + While(真) + エンティティ
私はキャンドル レコーダー (Binance Crypto) を構築しています。これは、市場調査目的のキャンドル内データを含む、1 分間のキャンドルに興味深いものです (しかし、最終的には、この同じコードを使用して、実際に市場で何が起こっているかを監視することができます)。
最終的なラグ/EF/SQLパフォーマンスなどを回避するために、2つのスレッドを使用してこれを達成することにしました。
1 つは Binance からサブスクライブされた (非同期) トークンを受け取り、それらを ConcurrentQueue に入れ、もう 1 つは MSSQL でデータをデキューして保存しようとし続けます。
私の質問は、2 番目のスレッドである while(true) ループです。EF を使用して、これらの情報が個別に (場合によっては 300 ミリ秒で 300 の情報、場合によってはそれ以下) 入ってくる間、SQL に 200 + 情報/秒のように保存するための最良の方法は何ですか?
保存するたびにSQL conを開く必要がありますか? (パフォーマンス)。これを達成するための最良のアプローチは何ですか?
-- 編集済み -- ある時点でキューに 600k+ があったため、SQL への挿入で問題に直面しています Linq から SQL から EF に変更されました
これが私の実際のコードです:
前もってThx
ラファエル
c# - 再構築中の同時キューへのアクセスの防止
ConcurrentQueue
キューにエンキューおよびキューからデキューするためのいくつかのヘルパー メソッドを持つオブジェクトを保持する があります。いくつかの基準に一致するアイテムをキューから削除してからキューを再構築する必要があります。これは、デキューされた最初のアイテムに含まれていない可能性があるためです。
どうすればこれを安全に行うことができますか?
ConcurrentQueue
スレッドセーフであるはずですが、削除と再構築が行われているときにアイテムがキューに追加/削除されないようにしたいです。
私はこれを試していますが、それが正しいかどうかはわかりません。
私は公開し_emailMessages
ていますが、適切なメソッドを呼び出さない限り、実際にはコレクションを変更していません。
そのメソッドの実行が完了するまで何もエンキューまたはデキューしないようにするために、ロジックの周りに何かを配置する必要があると思いますが、RemoveSiteEmailsAndRebuildQueue
それが何であるかはわかりません。