問題タブ [pulse]
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# - C#: Monitor.Pulse() が機能しない
この最小限のテストケースに縮小した問題がありましたが、それでも正しく機能しない理由がわかりません。ここでのコードは単純です。親スレッドがロックを取得し、次に子を起動し、次に await を開始してロックを解放します。次に、同じロックでロックされていた子スレッドが進み、親を解放し、次に 5 秒間スリープします。
それ以外は問題ありません… 機能しません。親は 5 秒後にのみ解放され、子が終了すると、出力に表示される場合があります。
を使用しようとしましたがMonitor.PulseAll()
、何も変わりませんでした。また、おそらく何らかの奇妙な理由で、子供がオブジェクトのコピーを取得したため、さまざまな変数で作業していると思いました。Sleep()
しかし、私は親に呼び出しを設定することでそれを反証しました— 子供は確かにロックを待っていました.
これは何ですか、それはバグですか?回避策はありますか?
c# - Monitor.Wait および Monitor.Pulse での再生中にメモリ不足の例外が発生する
.NET で Monitor クラスを操作していたので、動作しているように見えるコードにたどり着きましたが、しばらくループすると .NET がスローされOutOfMemoryException
ます。
これを 8 GB の RAM を搭載した 64 ビット Windows 8 開発者用マシンで実行していますが、プロセスが RAM で 100 MB を超えるスペースを占有することはありません。
これは私のコードです:
ここで、断片化の問題である可能性があることを読みGC.Collect()
、最後に を追加しました。ただし、大きなスペースを割り当てているわけではありません。
次に、ループが例外をスローする前にループが何回繰り返されるかを測定し、カウンターを追加することにしました。
これにより、例外のスローが大幅に遅くなるようです。36000回の繰り返しを測定しました。
counter - アップ/ダウン カウンター、4to1 mux、pulsegen の Verilog モジュール コードの記述
私は Verilog モジュールを作成する世界にかなり慣れていないので、4to1 マルチプレクサー、パルス ジェネレーター、アップ/ダウン カウンター、および 16 進数から 7 セグメントへのディスプレイを作成する必要があります。これらはすべて、後でトップレベル モジュールに配置されます。
7 セグメントとパルス ジェネレータを作成しようとしましたが、4to1 マルチプレクサ (以前は 2to1 マルチプレクサしか作成したことがありません) とアップ/ダウン カウンタを作成するのに助けが必要です。
これは私の研究室の論文の説明です。
pulse gen: カウンターが増加または減少する時間を制御するために使用されます。これは、DELAU という名前の入力を使用して、各パルス出力間の時間の長さを決定します。各クロックティックがカウントされます。カウントされたクロック ティックの数が遅延入力と等しい場合、パルスが生成されます。
アップ/ダウン カウンター: パルスが受信されるたびに 8 ビット レジスタをインクリメントまたはデクリメントします。ザイリンクス ボードからの外部スイッチが High (1) の場合、カウンターがインクリメントします。スイッチはロー (0) で、レジスタをデクリメントします。レジスタカウントデータは、LED と 7 セグ表示のトップレベルに出力されます。
4to1 mux: パルス生成に遅延入力を提供します。マルチプレクサへの 4 つの入力は、それぞれ 0.5、1、1.5、および 2 秒の遅延の長さを提供するために、トップレベルでハードコーディングされます。2 ビットの選択は、ザイリンクス ボードの 2 つのスイッチから取得されます。ボードから、ユーザーはカウンターがカウントアップまたはカウントダウンする遅延時間を切り替えることができます。
だからここに私がこれまで持っているものがあります。マルチプレクサとアップダウン カウンターはあまりありません。(私のpulsegenもチェックしていただけますか?)
4to1MUX
アップダウンカウンター
パルスジェネレータ
7セグメント表示
matlab - Scope に予期しないパルス発生器の出力が表示される
この単純な simulink モデルでスコープの出力を理解するのに問題があります。
固定ステップ ソルバーを使用しています (ode3 と ode8 で試しました)。
Pulse type
パルス発生器の を に設定しSample based
、 と を変更しましPeriod
たPulse Width
。
まず、シミュレーション時間を 10 に設定し、パルス発生器をPeriod = 10
およびに設定しPuls width = 5
ます。スコープの出力は期待どおりです。
Period = 1,000
しかし、シミュレーション時間を 10,000 にしてパルス発生器を試してみたところPuls width = 500
、スコープが間違っているようです。
最初の立ち下がりエッジが 5,500 にあるのはなぜですか? 私は毎回 Autoscale ボタンを使用しました。
sim time 100,000 を使用するとPeriod = 10,000
、Puls width = 5,000
立ち下がりエッジが 1 つも得られません。
シミュレーション時間が長くなっても、スコープ ウィンドウの最後に 1 つの立ち上がりエッジがあるように見えます。
私は何を間違っていますか?スコープは、固定ステップ ソルバーを使用したこのような長いシミュレーション時間には適していませんか? または、Autoscale ボタンを使用するのは「安全」ではありませんか?