繁体   English   中英

程序如何处理多个线程和信号的中断?

[英]How does a program handle an interruption with several threads and signals?

想象一下,我有一个带有 main 函数的程序,可以创建多个线程。 在每个线程中,我通过signal(SIGINT, functionA)CTRL + C中断( SIGINT )重定向到functionA ,在主进程中,我将相同的中断重定向到functionBsignal(SIGINT, functionB )。

当程序运行并发送中断SIGINT时,程序会做什么? 它将执行functionA中的所有线程然后functionB的主要过程?

信号处理程序操作(SIG_IGN、SIG_DFL 或处理程序函数)是每个进程的属性,而不是每个线程的属性。

这意味着如果说不同的线程使用sigaction()来设置相同的信号操作,那么最新的一个获胜。

此外,如果您有多个不阻塞信号的线程,内核只需选择一个(基本上是随机的)用于传递信号。 也就是说,它只传递一次,而不是每个线程一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM