【发布时间】:2017-12-28 11:02:35
【问题描述】:
我正在用 C 语言编写一个多线程程序,其中 main() 会改变一些信号的行为,然后产生更多线程。问题是:其他线程是在信号到达时继续执行,还是在处理信号时暂停并恢复执行?
谢谢
【问题讨论】:
-
不,其他线程没有暂停。但即使他们会被暂停,我认为这对你没有帮助。
-
线程和信号之间的交互在 C 标准中是未定义的,因此没有通用的答案。请使用您正在使用的操作系统和/或线程标准标记您的问题。
-
我正在使用 POSIX 线程和 Linux 4.4。另外,我不是在问如何暂停线程的执行,而是在问其他线程是否在信号到达时暂停,因为根据答案,我将不得不继续编程做一件事或另一件事.谢谢。
-
如果线程都在同一个 CPU 上运行,那么它们会在信号处理程序运行时停止。如果它们都运行在不同的 CPU 上,那么只有接收信号的线程运行信号处理程序。
标签: c multithreading signals execution pause