История изменений
Исправление
hateyoufeel,
(текущая версия)
:
Обычно в документации библиотечных вызовов указывается, thread-safe функция или нет. А если ты дергаешь их в многопотоке своего кода – то задача синхронизации их вызовов на твоих плечах.
Ага, и при этом эта документация не учитывает гонку в getenv. Сейчас проверил у curl, там про это ничего нет.
В любом случае, getenv никак мютексом не защитишь. Просто потому что он может быть вообще в любой библиотеке. Или ты серьёзно предлагаешь вообще все внешние библиотечные вызовы под мютекс совать?
Я сам наступал на грабли с функциями типа EVP_MD_CTX_new() пока не разобрался со всеми правилами их использования в многопотоке :(
API OpenSSL – один из наиболее ублюдочных что я видел в своей жизни. С ним не разбираться надо, его надо выкинуть на помойку и забыть как страшный сон.
Исправление
hateyoufeel,
:
Обычно в документации библиотечных вызовов указывается, thread-safe функция или нет. А если ты дергаешь их в многопотоке своего кода – то задача синхронизации их вызовов на твоих плечах.
Ага, и при этом эта документация не учитывает гонку в getenv. Сейчас проверил у curl, там про это ничего нет.
В любом случае, getenv никак мютексом не защитишь. Просто потому что он может быть вообще в любой библиотеке. Или ты серьёзно предлагаешь вообще все внешние библиотечные вызовы под мютекс совать?
Исходная версия
hateyoufeel,
:
Обычно в документации библиотечных вызовов указывается, thread-safe функция или нет. А если ты дергаешь их в многопотоке своего кода – то задача синхронизации их вызовов на твоих плечах.
Ага, и при этом эта документация не учитывает гонку в getenv. Сейчас проверил у curl, там про это ничего нет.