如何处理信号处理程序

时间:2017-07-19 21:39:33

标签: c pthreads mutex

我有一个受pthread互斥锁保护的双链表。如何从信号处理程序正确访问此列表? (这里,信号处理程序是生产者,而其他一些代码(线程)是消费者。)

1。)我不需要mutex_lock列表,因为信号处理程序是整个程序中唯一可以在信号处理期间访问列表的部分。

2。)但是如果信号处理程序例如会发生什么?添加一些东西到列表中,其他一个线程当前正在访问链接列表时,信号被提出? 在这种情况下,我认为代码可能会在信号处理程序返回时崩溃(因为信号处理程序中的列表修改,当前访问列表的线程未检测到该列表)。

关于如何处理这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

你没有。

你应该让信号处理程序告诉其中一个线程它有信号。然后该线程(外部信号处理程序)可以访问该列表。

或者,使用signalfd并且根本没有信号处理程序。