Потокобезопасный против асинхронного безопасного сигнала

В разделе APUP 12.5 упоминается, что:

"Если функция реентерабельна по отношению к нескольким потокам, мы говорим, что она поточнобезопасна. Однако это не говорит нам, является ли функция реентерабельной по отношению к обработчикам сигналов".

Я был озадачен, почему функция является поточно-ориентированной, но, возможно, не асинхронно-безопасной.

есть ли пример?

Спасибо

1 ответ

Решение

Функция может быть поточно-ориентированной, если она защищает состояние, которое она изменяет, с помощью мьютекса. Это, однако, не безопасно для асинхронных сигналов, так как если вы вызываете функцию, например, из обработчика сигнала, программа может зайти в тупик.

Общей функцией с этим свойством является malloc().

Другие вопросы по тегам