Czy można bezpiecznie używać std::condition_variable::notify_one
w obsłudze sygnału? Przykład:C++ 11 zmienna warunków użycia w obsłudze sygnału
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 projekt standardu, [N4296] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf). –
Podsumowując tę raczej niepomocną odpowiedź, nie można użyć zmiennej warunku, ponieważ nie jest ona "funkcją ze wspólnego podzbioru". – simonwo