标签: interrupt

Java长时间运行任务线程中断vs取消标志

我有一个长期运行的任务,如:

public void myCancellableTask() {
    while ( someCondition ) {
       checkIfCancelRequested();
       doSomeWork();
    }
 }
Run Code Online (Sandbox Code Playgroud)

任务可以取消(请求取消,checkIfCancelRequested()检查取消标志).通常,当我编写这样的可取消循环时,我使用一个标志来指示已请求取消.但是,我知道我也可以使用Thread.interrupt并检查线程是否被中断.我不确定哪种方法是首选,为什么,想法?

谢谢,

杰夫

java concurrency multithreading interrupt

14
推荐指数
2
解决办法
3854
查看次数

中断被阻止的读取

我的程序经历了这样的循环:

...
while(1){
  read(sockfd,buf,sizeof(buf));
  ...
}
Run Code Online (Sandbox Code Playgroud)

read函数在等待输入时阻塞,这恰好来自套接字.我想处理SIGINT并且基本上告诉它在读取时停止读取函数然后调用任意函数.做这个的最好方式是什么?

c linux signals interrupt

14
推荐指数
1
解决办法
1万
查看次数

为什么我不能从保护模式调用BIOS中断?

对.今天我花了三个多小时试图理解为什么你不能在保护模式下调用bios ISR.我得到的一旦你设置和IDT它不一定是在通常的地址为IVT加段没有固定的大小在保护模式等.但我仍然不明白为什么不能你jsut创建一个4GB段,将您的IDT段映射到BIOS IVT,将所有内容设置为0,然后调用它们.不应该那样吗?

大多数文章要么说:"记住你不能在保护模式下使用BIOS中断!" 没有探索主题或极具描述性和引用陷阱,例外,图片重新制作,缺乏权利和段记录的问题作为其背后的原因.

如果有人能够提出一个更人性化的解释,那将是非常有帮助的...我不怀疑文章所说的内容,我只是想明白为什么会这么"痛苦"!

提前致谢!

protected mode interrupt bios

13
推荐指数
2
解决办法
3345
查看次数

Linux内核中断处理程序互斥保护?

我是否需要保护我的中断处理程序被多次调用同一个中断?

鉴于以下代码,我不确定我应该进行的系统调用.我正在使用当前的实现获得罕见的随机死锁: -

void interrupt_handler(void)
{
    down_interruptible(&sem);  // or use a lock here ?

    clear_intr(); // clear interrupt source on H/W

    wake_up_interruptible(...);

    up(&sem); // unlock?

    return IRQ_HANDLED;
}

void set/clear_intr()
{
    spin_lock_irq(&lock);
    RMW(x); // set/clear a bit by read/modify/write the H/W interrupt routing register
    spin_unlock_irq(&lock);
}

void read()
{
    set_intr();  // same as clear_intr, but sets a bit
    wait_event_interruptible(...);
}
Run Code Online (Sandbox Code Playgroud)
  1. 应该interrupt_handler:down_interruptiblespin_lock_irq/ spin_lock_irqsave/ local_irq_disable
  2. 应该set/clear_intr:spin_lock_irqspin_lock_irqsave/ local_irq_disable? …

linux interrupt linux-device-driver linux-kernel

13
推荐指数
1
解决办法
1万
查看次数

并发 - 在不取消它的情况下中断未来

有没有办法在不取消它的情况下打断未来?

java doc API:

boolean cancel(boolean mayInterruptIfRunning)

尝试取消执行此任务.如果任务已完成,已取消或由于某些其他原因无法取消,则此尝试将失败.如果成功,并且在调用cancel时此任务尚未启动,则此任务永远不会运行.如果任务已经启动,则mayInterruptIfRunning参数确定执行此任务的线程是否应该在尝试停止任务时被中断.

要捕获中断,我们必须正确捕获Interrupted Exception或检查Runnable/Callable方法中的isInterrupted()方法.

但是没有办法使用Future接口中断正在运行的Future

由于所有线程都在Executor Service池中,因此没有人可以执行thread.interrupt().这就是为什么假设只有当Future被取消或线程池终止时才会出现任何中断?

我试图理解为什么Future接口中没有中断方法.任何帮助将不胜感激

java concurrency future interrupt

13
推荐指数
1
解决办法
5049
查看次数

在Thread.join()之前调用Thread.interrupt()会导致join()立即抛出InterruptedException吗?

基本上,问题标题是什么.

Thread t = new Thread(someRunnable);
t.start();
t.interrupt();
t.join(); //does an InterruptedException get thrown immediately here?
Run Code Online (Sandbox Code Playgroud)

从我自己的测试来看,似乎,但只是想确定.我猜测在执行"等待"例程之前Thread.join()检查interrupted线程的状态?

java concurrency multithreading interrupt interrupted-exception

13
推荐指数
2
解决办法
1万
查看次数

硬件定时器中断在哪里?

这是"英特尔架构软件开发人员手册"中的异常和中断表(我理解为IDT)

异常和中断

定时器中断在哪里使上下文切换成为可能?(用于多任务处理)

如果这是一个愚蠢的问题,请解释我的理解.先感谢您

linux operating-system kernel interrupt

13
推荐指数
2
解决办法
6270
查看次数

在x86上,当操作系统禁用中断时,它们是否会消失,或者它们是否排队并"等待"中断重新开启?

在Windows上,我的平台是x86和x86-64.

中断优先级系统的要点是让最高优先级的中断超过其他中断.为了强制执行此操作,我猜测Windows将完全禁用所有较低级别的中断,直到更高级别中断的ISR完成为止.

但如果CPU没有收听中断,会发生什么?他们只是默默地消失了吗?或者他们是否在硬件中排队,等待中断再次启用?如果存放,在哪里?有多少人可以排队?如果有太多中断没有被处理,会发生什么?如果存在中断处理积压的罕见情况,检测问题的工具是什么?

kernel driver interrupt interrupt-handling kmdf

13
推荐指数
1
解决办法
1869
查看次数

谁打断了我的线程?

我理解InterruptedException的作用以及它被抛出的原因.但是在我的应用程序中,我在等待SwingUtilities.invokeAndWait()一个只有我的应用程序知道的线程时得到它,而我的应用程序从不调用Thread.interrupt()任何线程,它也永远不会将线程的引用传递给任何人.

所以我的问题是:谁打断了我的线程?

有什么方法可以说出来吗?是否有理由说InterruptedException不包含请求中断的Thread的名称?

我读到它可能是一个框架或库来执行此操作,我们使用以下内容,但我无法想到它们中断我的线程的原因:

  • 过冬
  • 弹簧
  • Log4J的
  • Mysql连接器

java swing multithreading interrupt interrupted-exception

12
推荐指数
2
解决办法
1323
查看次数

ARM bootloader:中断向量表理解

下面的代码是用于定义中断向量表的u-boot的第一部分,我的问题是如何使用每一行.我理解前两行是起点和第一条实现的指令:reset,我们在下面定义reset.但我们什么时候会在下面使用这些说明?根据System.map,每条指令都有一个固定的地址,所以_fiq在0x0000001C,当我们想要执行fiq时,我们会将这个地址复制到pc然后执行,对吧?但是我们可以通过哪种方式跳转到这条指令:ldr pc,_fiq?它是通过硬件还是软件实现的?希望我能让自己理解正确.

>.globl _start  
>_start:b         reset  
>       ldr       pc, _undefined_instruction  
>       ldr       pc, _software_interrupt  
>       ldr       pc, _prefetch_abort  
>       ldr       pc, _data_abort  
>       ldr       pc, _not_used  
>       ldr       pc, _irq  
>       ldr       pc, _fiq  

>_undefined_instruction: .word undefined_instruction  
>_software_interrupt:    .word software_interrupt  
>_prefetch_abort:        .word prefetch_abort  
>_data_abort:            .word data_abort  
>_not_used:              .word not_used  
>_irq:                   .word irq  
>_fiq:                   .word fiq  
Run Code Online (Sandbox Code Playgroud)

arm interrupt bootloader

12
推荐指数
2
解决办法
2万
查看次数