7
在信號處理程序中使用std::condition_variable::notify_one
安全嗎?例如:C++ 11在信號處理程序中使用條件變量
enum State {
DoNot,
Do,
};
State state;
std::mutex mutex;
// worker thread
std::thread th = std::thread([]()
{
std::unique_lock<std::mutex> lc(mutex);
cv.wait(lc, []() { return state; });
});
//signal handler
void handler(int sig)
{
if (sig == SOME_SIG)
{
std::unique_lock<std::mutex> lc(mutex);
state = Do;
cv.notify_one();
}
}
C++ 14標準草案,[N4296](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf)。 –
爲了總結這個相當無用的答案,不,你不能使用一個條件變量,因爲它不是來自公共子集的一個特徵。 – simonwo