问题标签 [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.

0 投票
1 回答
1232 浏览

exception-handling - 内核软件陷阱处理

我正在读一本关于 Windows Internals 的书,但有些东西我不明白:

“内核处理软件中断或者作为硬件中断处理的一部分,或者在线程调用与软件中断相关的内核函数时同步处理。”

那么这是否意味着软件中断或异常将仅在以下条件下处理:

****一个。当内核从所述线程执行与软件异常(陷阱)相关的函数时 b.当它已经在处理硬件陷阱时****

我对此的理解正确吗?

下一点:

“在大多数情况下,内核会安装前端陷阱处理函数,这些函数在将控制权转移到其他触发陷阱的函数之前和之后执行一般的陷阱处理任务。”

我不太明白“前端陷阱处理功能”和“现场陷阱”是什么意思?

谁能帮我?

0 投票
2 回答
2705 浏览

c++ - 在 QueueUserAPC 中指定的回调不会被调用

在我的代码中,我使用QueueUserAPC中断当前工作的主线程,以便在返回他之前的工作之前先调用一些回调。

storeHandlestartSecondThread暴露于在主线程中运行的 Lua 解释器以及其他东西。我现在做的是

  1. storeHandle从我的 Lua 解释器调用。DuplicateHandle返回一个非零值,因此成功。
  2. startSecondThread从我的 Lua 解释器调用。附加线程正确启动,并QueueUserAPC返回一个非零值,说明一切顺利。
  3. 据我了解QueueUserAPCmyCallback现在应该从主线程调用。然而,事实并非如此。

如果QueueUserAPC是实现我的目标的正确方法(==> 请参阅我的其他问题):

  • 我怎样才能得到这个工作?

如果我应该使用其他方法来中断主线程:

  • 我应该使用什么其他方法?(请注意,我不想在主线程中使用pull -ing 方法来进行类似WaitForSingleObject或轮询。我希望附加线程push -es 它的数据尽快直接进入主线程。)
0 投票
4 回答
1374 浏览

assembly - PIC 16F684 微控制器中断处理

几周前,我刚刚完成了大学的微处理器课程,在那里我们只用汇编编程。我们学到了很多关于中断的知识(恕我直言)。

这是我的问题:我正在使用 16F684 的 HiTech 编译器用 C 语言编程,在讨论中断的数据表部分(PIC 16F684 数据表第 12.4 节)中,它说程序将转到中断向量 0x0004。使用我的微处理器类中的程序集,我们只需设置一个指向该地址的 .org 语句并在下面编写所需的程序集,以便在发生中断时跳转到那里并运行。我可以在汇编中弄清楚这一点,但是当我在 CI 中编程时,我不相信我可以控制程序片段在内存中的位置,这会带来问题。我不知道如何在 C 中的中断处放置命令。

如果我需要澄清,请告诉我!

0 投票
1 回答
800 浏览

usb - C8051F320 上的 HID 输入报告队列

似乎一旦为主机准备好数据(例如,当我使用 WriteFile 向 HID 发送命令时,我告诉 HID 返还一些数据,例如端口值)并且数据包就绪位是设置,主机在调用 ReadFile 之前读取它(由另一个 USB 中断确认)。ReadFile 稍后用于将此数据放入主机上的缓冲区。这是它应该发生的方式吗?我本来希望 ReadFile 调用会导致 in 中断。

所以这是我的问题:我有一个可以很好地协同工作的 GUI 和 HID。HID 可以对另一个 IC 执行 I2C,GUI 可以告诉 HID 执行 I2C 就好了。启动时,GUI 从 HID 读取数据并获得正确的值(例如 0x49)。打开第二个 GUI 到同一个 HID 会从 HID 读取相同的初始数据并获得正确的值(例如,0x49;它应该与第一个 GUI 的读取相同)。现在,如果我转到第一个 GUI 并进行 I2C 读取,回读值为 0x49,这是第二个 GUI 从 HID 请求的值。似乎 HID 将此值放在连接到它的所有设备的 in 端点上。因此,第一个 GUI 错误地认为这是正确的值。

根据 Jan Axelson 的 HID 常见问题解答,“HID 的每个打开句柄都有自己的报告队列。设备发送的每个报告都会进入所有队列,因此多个应用程序可以读取相同的报告。” 我相信这是我的问题。如何在第一个 GUI 发出请求之前清除它并清除端点,以便正确的值(HID 确实发送每个调试器)通过?我尝试了 HidD_FlushQueue,但它一直返回 False(不工作;不断收到“句柄无效”错误,尽管句柄在每个 WriteFile/ReadFile 成功的情况下使用相同的句柄都是有效的)。有任何想法吗?

谢谢!

0 投票
7 回答
12043 浏览

java - Thread.interrupt() 是邪恶的吗?

一位队友提出以下主张:

Thread.interrupt()天生就坏了,应该(几乎)永远不要使用”。

我试图理解为什么会这样。

这是一个从不使用的已知最佳实践Thread.interrupt()吗?你能提供证据为什么它被破坏/错误,并且不应该用于编写健壮的多线程代码吗?

注意- 如果设计防腐剂“漂亮”,我对这个问题不感兴趣。我的问题是 - 它有问题吗?

0 投票
4 回答
663 浏览

stack - bios 中断调用所需的堆栈大小

我正在开发一个用于学习目的的小型引导加载程序。是否有任何关于 bios 中断调用所需的(免费)堆栈大小的规范/信息?

0 投票
3 回答
7112 浏览

java - Java Thread - 奇怪的 Thread.interrupted() 和 future.cancel(true) 行为

我想管理我的 TaskExecutor 返回的 Futures 对象列表。
我有这样的东西

ProcessThis 是实现 Callable<String> 并检查 Thread.interrupted() 状态的任务

现在的问题是,当调用 Thread.interrupted() 时,只有一部分并发线程返回“真”。
removeFutures() 中的断言为每个被删除的未来返回 true(我也检查了 isDone() 和 isCompleted()。
被中断的线程数是随机的。超过 15 个正在运行的线程,有时 13 个被中断,有时 2 个 .. .
我真的不明白问题出在哪里.如果我调用future.cancel(true)并且返回true...然后我检查Thread.interrupted(仅调用一次),我希望它也返回true .
知道我错过了什么吗?

我正在构建 java 1.6.0_02-b05

0 投票
2 回答
6958 浏览

java - Java线程中断和join(join后线程还活着)

我试图找出一些行为。我有一些产生一个线程的代码。它等待一段时间,然后中断它,加入它,然后退出该方法。

我目前只用一个线程运行它。我可以在我的日志中看到,通常 isAlive() 在加入后会为假,但有时它仍然存在。线程处于一个while循环中:

所以我怀疑正在发生的事情是我们在读取/处理输入流(阻塞io)时中断了线程,并且它所花费的时间超过了达到while条件并完成连接所需的时间。

所以我的问题是,线程会发生什么?

它不再被引用,线程可以被垃圾收集,但没有一个资源被正确清理,这看起来很糟糕。除了切换到 NIO 之外,还有更好的模式吗?

0 投票
5 回答
5887 浏览

interrupt - 中断如何在 Intel 8080 上工作?

中断如何在 Intel 8080 上工作?我搜索了谷歌和英特尔的官方文档(197X),我只找到了一点关于这个的描述。我需要一个详细的解释来模拟这个 CPU。

0 投票
1 回答
1894 浏览

java - 程序在 ServerSocket.accept 处无响应 - Java

我的程序只监听一个连接...如果没有客户端连接,程序就会卡在 clientSocket = serverSocket.accept() 上。我的意思是我什至不能通过关闭我的窗口来打断它。我无法单击框架等中的任何按钮。

我在我的其他程序中以同样的方式使用了这段代码,但它工作得很好(我可以点击文本字段和按钮和东西并在其中输入值,对于这个,它只是冻结在那里直到客户端连接,甚至不能出口)。

我已经删除了除此之外的所有代码(如下),但我仍然遇到相同的“冻结”问题