簡體   English   中英

libgcrypt 線程安全嗎?

[英]Is libgcrypt thread-safe?

庫 libgcrypt 是線程安全的嗎? 如果我沒有在線程之間分配這個庫的資源,而是在每個線程中創建不同的上下文。 C++ 編程語言。

文檔說, libgcrypt在條件下是線程安全的:

如前所述,如果您遵守以下要求,Libgcrypt 庫是線程安全的:

  • 如果你使用 pthread 並且你的應用程序 fork 並且不直接調用 exec(甚至調用 stdio 函數),則可能會出現各種問題。 Libgcrypt 的未來版本將嘗試使用 pthread_atfork 進行清理,但即使這樣也可能導致問題。 這是幾乎所有使用 pthread 和 fork 的應用程序的常見問題。
  • 函數 gcry_check_version 必須在庫中的任何其他函數之前調用。 要在多線程程序中實現這一點,您必須將內存與也想使用 Libgcrypt 的其他線程同步。 為此,在使用 Libgcrypt1 創建其他線程之前調用 gcry_check_version 就足夠了。
  • 就像函數 gpg_strerror 一樣,函數 gcry_strerror 不是線程安全的。 您必須改用 gpg_strerror_r 。

還有一個額外的警告:

至少對於 POSIX 線程來說是這樣,因為 pthread_create 是一個與其他線程同步內存的函數。 有許多函數具有此屬性,完整列表可以在 POSIX, IEEE Std 1003.1-2003, Base Definitions, Issue 6 中的術語“內存同步”的定義中找到。 對於其他線程包,可能適用更寬松或更嚴格的規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM