是否有C++标准库包装器或替代pthread_sigmask

Is there a C++ standard library wrapper around or replacement for pthread_sigmask?

本文关键字:pthread sigmask C++ 标准 包装 是否      更新时间:2023-10-16

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

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

特别是,我想知道是否有办法在这里使用c++11来做这个示例,而无需#include <pthread.h>

简短回答:不。

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

如果要使用该函数,则需要包含<signal.h>并直接使用它。即使是来自Boost的例子也这样做。

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