Pull to refresh

Comments 6

Ненормальное программирование

100% в точку. Исследовать POSIX сигналы под виндоус...

UFO just landed and posted this here
А если использовать мьютекс для блокировки общего ресурса, кем является поток вывода.
Тогда при следующем сигнале получаем deadlock и все.
Не знаю как в винде, возможно своя специфика, но в POSIX подробно описано что такое async-signal-safe и что гарантировано им является.

Ну вот вы захватили мьютекс, вызвали printf. Тут пришёл сигнал, и вы снова захватываете мьютекс чтобы вызвать printf. Результат — либо ошибка, либо взаимоблокировка. И даже если вы используете реентерабельную критическую секцию, вызов printf пока выполняется printf всё равно будет ошибкой.

Предлагаю обратить внимание на

std::this_thread::get_id()

для получения id потока вместо самопальной функции.

Sign up to leave a comment.

Articles