Потокобезопасный против асинхронного безопасного сигнала
В разделе APUP 12.5 упоминается, что:
"Если функция реентерабельна по отношению к нескольким потокам, мы говорим, что она поточнобезопасна. Однако это не говорит нам, является ли функция реентерабельной по отношению к обработчикам сигналов".
Я был озадачен, почему функция является поточно-ориентированной, но, возможно, не асинхронно-безопасной.
есть ли пример?
Спасибо
1 ответ
Решение
Функция может быть поточно-ориентированной, если она защищает состояние, которое она изменяет, с помощью мьютекса. Это, однако, не безопасно для асинхронных сигналов, так как если вы вызываете функцию, например, из обработчика сигнала, программа может зайти в тупик.
Общей функцией с этим свойством является malloc().