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

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

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

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

есть пример?

Спасибо


person camino    schedule 01.03.2012    source источник


Ответы (1)


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

Распространенной функцией с этим свойством является malloc().

person janneb    schedule 01.03.2012