是否有C ++标准库包装或替换pthread_sigmask?

时间:2014-02-26 21:55:30

标签: c++ c multithreading c++11 signals

在我正在处理的代码库中,所有线程控制都是使用std::thread和相关对象完成的,而不是直接使用pthread

但是,我找不到pthread_sigmask的C ++等价物,所以我想知道是否有一种标准的C ++方法来阻止信号,从而在多线程应用程序中一致地处理信号。 / p>

特别是,我想知道是否有办法在没有c++11

的情况下使用#include <pthread.h>来执行示例here

1 个答案:

答案 0 :(得分:2)

简答:不。

pthread_sigmask是一个pthread函数,C ++标准的线程函数库不依赖于特定的线程库。例如,Windows实现可能会使用Windows API。

如果您想使用该功能,则需要包含<signal.h>并直接使用。即使examples from Boost也这样做。

考虑一下你想要做什么,并问自己是否真的想通过依赖非标准功能或概念来打破可移植性。请记住,线程和信号可能无法很好地协同工作;见Are std::signal and std::raise thread-safe?