Как стать автором
Обновить

Комментарии 6

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

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

НЛО прилетело и опубликовало эту надпись здесь
А если использовать мьютекс для блокировки общего ресурса, кем является поток вывода.
Тогда при следующем сигнале получаем deadlock и все.
Не знаю как в винде, возможно своя специфика, но в POSIX подробно описано что такое async-signal-safe и что гарантировано им является.

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

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

std::this_thread::get_id()

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации