問題タブ [synclock]
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.
vb.net - SyncLockまたはInterlockedを使用する必要がありますか?
誰かがsynclockステートメントがどのように機能するかを理解するのを手伝ってもらえますか?ここにsynclockに関する他の投稿があることは知っていますが、答えをうまく追うことができませんでした。簡単なマルチスレッドの例を起動して実行しようとしていますが、問題が発生しています。最初は次のコードを試しました。
2つのボタンがある単純なWinFormがありました。最初のボタンを使用してClass1のobjを作成し、新しいスレッドでMainLoopメソッドを開始しました。そして、2番目のボタンを使用してaddIntメソッドを呼び出しました。ただし、コードは1、2回押すと機能し、その後ロックされる可能性があります。このフォームから他の質問を読んだ後、synclockステートメントのlockobjectが最初に思ったように機能せず、変更してはならない任意の参照オブジェクトであることに気付きました。syncLockステートメントは、プロセッサ制御を新しいスレッドに渡す前に、コードブロック全体を強制的に実行するだけだと思います。そこで、別のロックオブジェクトを使用してこれを試しましたが、今はロックされます。
上記のコードが機能しない理由を誰かが説明できますか?同様の投稿で、Interlockedクラスは便利だと誰かが言っていましたが、それが何であるか、またはそれがどのように使用されているかを理解できませんでした。簡単な「ダミーのためのインターロッククラス」の説明もいただければ幸いです。
vb.net - SyncLock と非常に多くのスレッド VB .Net
私の場合は、SyncLock を使用して一度に 1 つのスレッドによるファイルの書き込みを保証する次のメソッドがあります。
私は同時に実行されている多くのスレッドを使用しています:
私の問題は、X が大きい場合 (500 など)、1 つ以上のスレッドが同時にファイルに書き込むことです。なぜこれが起こっているのですか?
vb.net - vb.netで2つのスレッドが同時に実行されるのを防ぐ
私は.netでスレッド化するのが初めてで、使用できる良い例を見つけるのは難しい. ここで記事を読んでいます。マネージド スレッディングのベスト プラクティスしかし、まだよくわかりません。現在、2 つのスレッドを同時に実行しようとしているプログラムがありますが、異なることを行っています。1 つのスレッドが想定どおりに動作していますが、2 つ目のスレッド (私は PrintThread と名付けました) を開始すると、PrintThread とメイン スレッドが同じコード行を実行しています。これを回避するには、syncLock ステートメントを調べる必要がありますか?
c# - SyncLock/lockの使用時にアクセスが拒否されました
このエラーは一般的ではなく、これまでのところ1台のコンピューターでのみ検出されています。再現することはできますが、そのコンピューターに開発環境がありません。オブジェクトでSyncLock/lockを呼び出すと、エラーが表示されます。
何がこの種のエラーを引き起こす可能性がありますか?
vb.net - 同期リストまたは ListItem
MS リファレンス: http://msdn.microsoft.com/en-us/library/3a86s51t(v=vs.71).aspx
「SyncLock ステートメントの式の型は、クラス、モジュール、インターフェイス、配列、デリゲートなどの参照型でなければなりません。」
シナリオ: 複数のスレッドがリストを読み取り、編集しています。
これにより競合状態が回避されることはわかっています。
しかし、これでしょうか?
button - 押しボタンを使用して 7 セグメントをインクリメントする
私の fpga はスパルタン 3E-100 Cp132 です。入力として 4 つの押しボタンがあり、それらを使用してボードの 7 セグメントの 4 桁を増やしたいと考えています。VHDL コードは次のとおりです。
すべての押しボタンは、対応する 7 セグメントの数字 (b1 --> 右端の数字と b4 --> 左端の数字) を 1 ずつ増やします。問題は、ボタンを押すと、ジョブは実行されますが、1つではなく任意の数だけインクリメントされることです。その理由は、クロック 2 の立ち上がりエッジごとに 1 ずつ増加し、このクロックの周波数が原因で発生が速すぎるためです。どうすればこの問題を解決できますか? プッシュ ボタンのデバウンス コードをいくつか試しましたが、あまり役に立ちませんでした。私はここで完全に立ち往生しています。それを行う方法があるはずですが、どのように?ちなみに、上記のコードで私が使っているデバウンスコードは
事前に感謝します。
vb.net - シングルトンのバッキング フィールドのヌル チェックが過度に熱心ですか?
以下のコードは、アプリケーションで使用するシングルトンを表しています。_MyObject = New Objectは、どのような状況でも複数回実行したくない、非常にコストのかかるデータベース呼び出しを表していると仮定しましょう。これが起こらないようにするために、最初に_MyObjectバッキング フィールドが null です。そうである場合は、SyncLock に割り込んで、一度に 1 つのスレッドだけがここに入ることができるようにします。ただし、シングルトンがインスタンス化される前に 2 つのスレッドが最初の null チェックを通過した場合、スレッド A がインスタンスを作成している間、スレッド B は SyncLock で待機することになります。スレッド A がロックを終了した後、スレッド B はロックに入り、インスタンスを再作成します。その結果、高価なデータベース呼び出しが行われます。これを防ぐために、ロック内で発生するバッキング フィールドの null チェックを追加しました。このようにして、スレッド B がロックで待機することに成功した場合、スレッド B は通過し、インスタンスを再作成しないことを確認するためにもう一度 null チェックを行います。
では、2 つの null チェックを行う必要は本当にあるのでしょうか? 外側の null チェックを取り除くことと、Synclock から始めることはまったく同じでしょうか? 言い換えれば、変数のスレッドロックは、複数のスレッドがバッキングフィールドに同時にアクセスできるようにするのと同じくらい高速ですか? その場合、外側の null チェックは不要です。