問題タブ [interrupt]
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.
exception-handling - カーネル ソフトウェア トラップの処理
Windows Internals に関する本を読んでいますが、理解できないことがあります。
「カーネルは、ハードウェア割り込み処理の一部として、またはスレッドがソフトウェア割り込みに関連するカーネル関数を呼び出すときに同期的にソフトウェア割り込みを処理します。」
これは、ソフトウェア割り込みまたは例外が次の条件下でのみ処理されることを意味します。
****a. カーネルが、ソフトウェア例外 (トラップ) に関連するスレッドから関数を実行している場合 b. すでにハードウェア トラップを処理している場合****
これについての私の理解は正しいですか?
次のビット:
「ほとんどの場合、カーネルは、トラップを処理する他の関数に制御を転送する前後に、一般的なトラップ処理タスクを実行するフロントエンド トラップ処理関数をインストールします。」
「フロントエンド トラップ処理関数」と「フィールド ザ トラップ」の意味がよくわかりません。
誰でも私を助けることができますか?
c++ - QueueUserAPCで指定されたコールバックは呼び出されません
私のコードでは、前の作業に戻る前に最初にコールバックを呼び出すために、現在の作業からメインスレッドを中断QueueUserAPC
するために使用します。
storeHandle
そしてstartSecondThread
、他のものと一緒にメインスレッドで実行されているLuaインタープリターにさらされています。私が今していることは
storeHandle
私のLuaインタプリタから呼び出します。DuplicateHandle
ゼロ以外の値を返すため、成功します。startSecondThread
私のLuaインタプリタから呼び出します。追加のスレッドは適切に開始され、QueueUserAPC
すべてがうまくいったことを示すゼロ以外の値を返します。- 私が理解している限り
QueueUserAPC
、myCallback
メインスレッドから呼び出されるはずです。ただし、そうではありません。
QueueUserAPC
が私の目標を達成するための正しい方法である場合(==>他の質問を参照):
- どうすればこれを機能させることができますか?
メインスレッドを中断する他の方法が必要な場合:
- 他にどのような方法を使用する必要がありますか?(このようなポーリングやポーリングのためにメインスレッドでpull -ingメソッドを使用したくないことに注意してください
WaitForSingleObject
。追加のスレッドがデータをできるだけ早くメインスレッドに直接プッシュするようにします。)
assembly - PIC 16F684 マイクロコントローラの割り込み処理
ほんの数週間前に大学でマイクロプロセッサのクラスを終えたばかりで、そこではアセンブリのみでプログラミングしました。割り込みについてかなりの量(IMHO)を学びました。
ここに私の質問があります: 私は 16F684 用の HiTech コンパイラを使用して C でプログラミングしています。割り込みについて説明しているデータシート セクション ( PIC 16F684 データシートセクション 12.4) では、プログラムが割り込みベクトル 0x0004 に移動すると書かれています。マイクロプロセッサ クラスのアセンブリを使用して、そのアドレスを指す .org ステートメントをセットアップし、必要なアセンブリを以下に記述して、割り込みが発生したときにそこにジャンプして実行するだけです。アセンブリでそれを理解することはできますが、CI でプログラムする場合、プログラムの一部がメモリ内のどこに配置されるかを制御できるとは思えないため、問題が発生します。C の割り込みでコマンドを配置する方法がわかりません。
明確にする必要がある場合はお知らせください。
usb - C8051F320のHID入力レポートキュー
ホストのデータの準備が整うとすぐに(WriteFileを使用してHIDにコマンドを送信し、HIDにポート値などのデータを返すように指示する場合など)、パケット内の準備完了ビットは次のようになります。設定すると、ReadFileが呼び出される前に、ホストはそれを読み取ります(別のUSB割り込みによって確認されます)。ReadFileは、後でこのデータをホストのバッファーに入れるために使用されます。これはそれが起こるべき方法ですか?ReadFile呼び出しがin割り込みを引き起こすことを期待していました。
だからここに私の問題があります:私は一緒にうまく機能するGUIとHIDを持っています。HIDは別のICに対してI2Cを実行でき、GUIはHIDにI2Cを正常に実行するように指示できます。起動時に、GUIはHIDからデータを読み取り、正しい値(たとえば、0x49)を取得します。同じHIDに対して2番目のGUIを開くと、HIDから読み取られた同じ初期データが実行され、正しい値が取得されます(たとえば、0x49。最初のGUIの読み取りと同じである必要があります)。ここで、最初のGUIに移動してI2C読み取りを行うと、リードバック値は0x49になります。これは、2番目のGUIがHIDから要求した値です。HIDは、接続されているすべてのデバイスのエンドポイントにこの値を設定しているようです。したがって、1番目のGUIは、これが正しい値であると誤って判断します。
JanAxelsonのHIDFAQによると、「HIDへの開いているハンドルにはすべて独自のレポートキューがあります。デバイスが送信するすべてのレポートはすべてのキューに入れられるため、複数のアプリケーションが同じレポートを読み取ることができます。」これが私の問題だと思います。正しい値(HIDがデバッガーごとに送信する)が通過するように、最初のGUIが要求を行う前に、これをパージしてエンドポイントをクリアするにはどうすればよいですか?HidD_FlushQueueを試しましたが、Falseが返され続けます(機能しません。同じハンドルでWriteFile / ReadFileが成功するたびにハンドルは有効ですが、「ハンドルが無効です」というエラーが発生し続けます)。何か案は?
ありがとう!
java - Thread.interrupt() は悪ですか?
チームメイトは次のように主張しました。
「
Thread.interrupt()
本質的に壊れており、(ほとんど)使用しないでください」.
なぜそうなのかを理解しようとしています。
決して使用しないことが既知のベストプラクティスThread.interrupt()
ですか? それが壊れている/バグがあり、堅牢なマルチスレッドコードを書くために使用すべきではない理由を証明できますか?
注- この質問がデザインの防腐剤から「きれい」である場合、私はこの質問には興味がありません。私の質問は - バグがありますか?
stack - BIOS 割り込み呼び出しに必要なスタック サイズ
私は学習目的で小さなブートローダーに取り組んでいます。BIOS 割り込み呼び出しに必要な (無料の) スタック サイズに関する仕様/情報はありますか?
java - Java Thread - Thread.interrupted() および future.cancel(true) の奇妙な動作
TaskExecutor によって返される Futures オブジェクトのリストを管理したいと考えています。
私はこのようなものを持っています
ProcessThis は Callable< String> を実装し、Thread.interrupted() ステータスをチェックするタスクです。
ここでの問題は、Thread.interrupted() が呼び出されたときに、並行スレッドのサブセットのみが「true」を返すことです。
removeFutures() の assert は、削除されるすべてのフューチャに対して true を返します (isDone() と isCompleted() もチェックしました。
中断されるスレッドの数はランダムです。実行中のスレッドが 15 を超えると、13 が中断されることもあれば、2 .. .
どこに問題があるのか本当にわかりません. future.cancel(true) を呼び出して true が返された場合...そして Thread.interrupted をチェックすると (これは 1 回だけ呼び出されます)、これも true を返すと予想されます
何が欠けているのか分かりませんか?私
はビルド Java 1.6.0_02-b05 を使用しています
java - Java スレッドの割り込みと結合 (スレッドは結合後も生きている)
私はいくつかの行動を理解しようとしています。1 つのスレッドを生成するコードがいくつかあります。しばらく待ってから中断し、参加してからメソッドを終了します。
現在、これを 1 つのスレッドで実行しています。通常、参加後に isAlive() が false になることをログで確認できますが、まだ生きている場合もあります。スレッドは while ループに入っています:
したがって、スレッドが入力ストリームの読み取り/処理中にスレッドを中断し (io をブロック)、while 条件を押して結合を終了するのにかかる時間よりも多くの時間がかかっていると思われます。
私の質問は、スレッドはどうなりますか?
スレッドは参照されなくなり、スレッドをガベージ コレクションできますが、どのリソースも適切にクリーンアップされておらず、問題があるようです。NIO に切り替える以外に、これに適したパターンはありますか?
interrupt - Intel 8080で割り込みはどのように機能しますか?
Intel 8080で割り込みはどのように機能しますか?GoogleとIntelの公式ドキュメント(197X)を検索しましたが、これについての説明はほんの少ししか見つかりませんでした。このCPUをエミュレートするには、詳細な説明が必要です。
java - ServerSocket.acceptでプログラムが応答しなくなる-Java
私のプログラムは1回だけ接続をリッスンします...クライアントが接続しない場合、プログラムはclientSocket = serverSocket.accept()でスタックします。つまり、ウィンドウを閉じても中断することはできません。フレームなどのボタンがクリックできません。
私は他のプログラムでも同じようにこのコードを使用しましたが、正常に機能しました(テキストフィールドやボタンをクリックして値を入力できます。このコードでは、クライアントが接続するまでフリーズします。出口)。
これ(以下)を除くすべてのコードを削除しましたが、それでも同じ「フリーズ」の問題が発生します