我试图在中断发生后立即启动一个线程。但是,我意识到我无法从中断处理程序(或任何由中断处理程序直接或间接调用的函数)中启动线程。所以,我决定做的是让处理程序断言一个标志。然后,一个单独的线程持续监视该标志,如果它被断言,它将依次创建(并启动)一个线程。这是一个伪代码:
int interrupt_flag = 0;
interrupt_handler(void)
{
interrupt_flag = 1
}
monitoring_thread(void) //this thread is started at the start of the program
{
while(1)
{
if(interrupt_flag)
{
interrupt_flag = 0;
//start the thread here
sleep(/*some amount of time*/);
}
}
}
我对有一个专门的 while 循环不断监视标志并不满意。这样做的问题是它显着降低了我程序中其他线程的速度。出于这个原因,我调用了 sleep 函数来提高程序中其他线程的速度。
问题:有没有一种方法可以在中断时真正启动线程,而无需专门的 while 循环?是否有从中断处理程序中启动线程的解决方法?
如果有什么不同,我正在使用 POSIX 库。
谢谢,
PS。这个问题与此处发布的早期问题有些相关: