2017-01-28 3 views
-2

ライブラリlibgcryptはスレッドセーフなものですか?私はスレッド間でこのライブラリのリソースを分割するのではなく、すべてのスレッドで異なるコンテキストを作成する場合。 C++プログラミング言語。libgcryptはスレッドセーフですか?

答えて

0

Documentationlibgcryptが条件で、スレッドセーフである、と言う:あなたが使用している場合

  • 前述したように、あなたが次の要件に準拠し 場合、あるlibgcryptライブラリはスレッドセーフですpthreadとアプリケーションフォークがあり、exec(stdio関数を呼び出しても)を直接呼び出さない場合、すべての種類の が発生する可能性があります。 Libgcryptの今後のバージョンでは、pthread_atforkを使用して をクリーンアップしようとしますが、それでも問題が発生する可能性があります。これは、pthreadとforkを使用するほぼすべてのアプリケーションで共通の問題である です。

  • 関数gcry_check_versionは、ライブラリ内の他の関数の前に呼び出す必要があります。これをマルチスレッドプログラムで実現するには、 、 もLibgcryptを使用したい他のスレッドに関してメモリを同期させる必要があります。このため、Libgcrypt1を使用して他のスレッドを作成する前に、 gcry_check_versionを呼び出すだけで十分です。
  • 関数gpg_strerrorと同様に、関数gcry_strerrorはスレッドセーフではありません。代わりにgpg_strerror_rを使用する必要があります。

    のpthread_createが他のスレッドへの点でメモリを同期 関数であるように、少なくとも、これは、POSIXスレッドについても同様である。追加の警告と

。 このプロパティを持つ多くの関数があります。 は、POSIX、IEEE Std 1003.1-2003、Base Definitions、Issue 6の の "Memory Synchronization"という用語の定義にあります。他のスレッド パッケージの場合、より緩やかな、またはより厳しいルールが適用される場合があります。

関連する問題