ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

在Linux / C中,发送到线程/进程的信号是否使其变为活动状态?

2019-11-20 07:52:17  阅读:223  来源: 互联网

标签:multithreading c-3 linux c-4 signals


Linux中,将信号发送到进程/线程(无论出于何种原因)时,是否立即调用信号处理程序(假设有一个信号处理程序,并且未阻塞信号)?

我的意思是,我非常确定在处理信号的进程/线程中,它将立即被调用,但是对于其他进程/线程,我的意思是.

并且,如果立即调用该处理程序,是否还会使相应的进程/线程处于活动状态(以便其正常执行立即继续)?

编辑

由于我最初的问题似乎被误解了,因此我将尝试通过一个示例再次进行解释.

可以说,在我的计算机中,我有一个CPU,并且有2个进程在运行,进程“ A”和进程“ B”.并假设它们都没有阻塞系统调用(例如睡眠).我想通常情况下,操作系统会在一段时间后(例如,执行进程“ A” 100ms,然后执行进程“ B” 100ms,然后再次执行进程A 100ms)在执行进程“ A”和进程“ B”之间切换等).假设进程“ A”现在是活动进程(即它现在正在占用CPU).现在说,进程“ A”向进程“ B”发送信号(或者,无论出于何种原因,OS将该信号发送至进程“ B”).进程“ B”已经为该信号注册了一个处理程序,并且没有阻止它.所以问题是,操作系统现在是否将立即停止执行进程“ A”并切换到执行进程“ B”的信号处理程序?如果答案是肯定的,它之后会立即继续执行过程“ B”(正常代码,而不是信号处理程序),还是切换回执行过程“ A”,并且仅在一段时间后恢复执行过程’B’?

然后可以对线程而不是进程提出相同的问题.

解决方法:

不,信号仅在上下文切换器上传递.到那时,所有信号都将排队.在许多相同类型的信号中,通常只有一个信号传递到目的地.因此,我感到满意的是,销毁的信号多于传递的信号.
我建议您参考有关任何Unix书籍的章节.我最喜欢的是了解linux内核和linux内核开发.
如果您仍然需要技术帮助,请对此发表评论

标签:multithreading,c-3,linux,c-4,signals
来源: https://codeday.me/bug/20191120/2042423.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有