2014-02-26 55 views
3

在我正在處理的代碼庫中,所有線程控制都是使用std::thread和相關對象完成的,而不是直接使用pthread是否有一個C++標準庫封裝器或替換pthread_sigmask?

但是,我還沒有找到一個C++等效的pthread_sigmask,所以我想知道是否有一個標準的C++方法來阻止信號,從而在多線程應用程序中一致地處理信號。

特別,我想知道是否有一種方法可以做到使用c++11的例子here沒有#include <pthread.h>

回答

2

簡短的回答:沒有。

pthread_sigmask是一個pthread函數,線程函數的C++標準庫不依賴於特定的線程庫。例如,一個Windows實現可能會在後臺使用Windows API。

如果你想使用該功能,你需要包括<signal.h>並直接使用它。即使examples from Boost這樣做。

考慮你正在嘗試做什麼,並問自己是否真的想通過依賴非標準函數或概念來打破可移植性。請記住,線程和信號可能不會很好地結合在一起;見Are std::signal and std::raise thread-safe?