Комментарии 6
Ненормальное программирование
100% в точку. Исследовать POSIX сигналы под виндоус...
А если использовать мьютекс для блокировки общего ресурса, кем является поток вывода.
Тогда при следующем сигнале получаем deadlock и все.
Не знаю как в винде, возможно своя специфика, но в POSIX подробно описано что такое async-signal-safe и что гарантировано им является.
Не знаю как в винде, возможно своя специфика, но в POSIX подробно описано что такое async-signal-safe и что гарантировано им является.
Ну вот вы захватили мьютекс, вызвали printf. Тут пришёл сигнал, и вы снова захватываете мьютекс чтобы вызвать printf. Результат — либо ошибка, либо взаимоблокировка. И даже если вы используете реентерабельную критическую секцию, вызов printf пока выполняется printf всё равно будет ошибкой.
Предлагаю обратить внимание на
std::this_thread::get_id()
для получения id потока вместо самопальной функции.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Эксперименты с POSIX сигналами в Windows