2017-01-28 9 views

ответ

0

Documentation говорит, libgcrypt потокобезопасно с условиями:

Как уже упоминалось ранее, библиотека Libgcrypt потокобезопасно если вы придерживаться следующих требований:

  • Если вы используете pthread и виджеты приложений и напрямую не вызывает exec (даже вызывая функции stdio), могут возникнуть проблемы со всеми типами . Будущие версии Libgcrypt будут пытаться очистить с помощью pthread_atfork, но даже это может привести к проблемам. Это общая проблема практически со всеми приложениями, использующими pthread и fork.
  • Функция gcry_check_version должна быть вызвана перед любой другой функцией в библиотеке. Чтобы добиться этого в многопоточных программах, , вы должны синхронизировать память по отношению к другим потокам, которые также хотят использовать Libgcrypt. Для этого достаточно вызвать gcry_check_version, прежде чем создавать другие потоки, используя Libgcrypt1.
  • Как и функция gpg_strerror, функция gcry_strerror не является потокобезопасной. Вместо этого вы должны использовать gpg_strerror_r.

С дополнительной оговоркой:

По крайней мере, это верно для POSIX нитей, так как pthread_create является функцией, которая синхронизирует память с отношени других потоков. Существует много функций, которые имеют это свойство, полный список может содержать в POSIX, IEEE Std 1003.1-2003, Базовые определения, выпуск 6, в определение термина «Синхронизация памяти». Для других потоков могут применяться пакеты, более спокойные или более строгие правила.

 Смежные вопросы

  • Нет связанных вопросов^_^