关于pthread的信号问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:44:27
请问,多线程环境下的信号处理,子线程通过pthread_kill发送信号给主线程,主线程有什么办法得知信号是从哪个子线程发出的
谢谢你的回答
如果使用全局变量的话,假如第一个线程发出信号并把自己的tid写入全局变量,而下一个时间片没有分配给主线程而给了另一个子线程的话,这个子线程就有可能再次写入全局变量,导致前一个线程写入信息地丢失

这个是由实时操作系统来做的,他里头有个向量表(有点像队列),会根据信号的优先级,把信号的函数地址放入向量表的位置。并保存当前执行主线程的上下文(压栈)。

如果没有操作系统。。。你可以自己写向量表。(编个小操作系统)把得到的信号的函数加入队列,需要做的很多。要考虑的很周细!

根据你的补充,我所说的以上是可以解决你的问题的。我也作过linux下的多线程任务,你早说linux,linux下不用这么复杂。你可以使用1个全局变量进行控制,注意volatile或static。方法有很多