Verwenden von OpenSSL in einer Multithread-Anwendung

Ich habe unter Ubuntu eine SOAP-Client-Anwendung in C ++ geschrieben, die OpenSSL für meinen HTTPS-Transport und pthreads für das Threading verwendet. Ich habe eine Reihe von Threads - einen zentralen Datenerfassungsthread, der Worker-Threads regelmäßig dazu bringt, SOAP-Anforderungen über gemeinsam genutzte mutex-geschützte Warteschlangen zu stellen.

Beim Lesen der Dokumentation für OpenSSL habe ich gefundenIst OpenSSL threadsicher? in den OpenSSL-FAQ, in denen die Mechanismen beschrieben werden, die zur Gewährleistung der Threadsicherheit bei Verwendung von OpenSSL erforderlich sind. Ich habe dies implementiert und alles funktioniert gut.

Der Grund für meine Frage ist wirklich eine konzeptionelle Schwierigkeit. Ich dachte darüber nach, die gleiche Funktionalität zu implementieren, die meine Anwendung bereits hat, aber anstatt Threads zu verwenden, würde ich 2 separate erstellenanwendungen : Eine für den Arbeitsthread (von dem mehrere Kopien ausgeführt würden) und eine für den Haupt-Datenerfassungsthread. Ich würde dann TCP-Sockets verwenden, um zwischen den beiden Warteschlangen anstatt mutex-geschützten zu kommunizieren. Dies mag eine schlechte Idee sein, aber das ist nicht wirklich wichtig - was mich verwirrt, istMüsste ich in diesem zweiten Ansatz dieselben Funktionen implementieren, die zur Gewährleistung der OpenSSL-Threadsicherheit erforderlich sind, oder nicht?

Meine Vermutung ist, dass ich das nicht müsste und sie als unabhängig behandelt werden könnten (in der Tat muss es so sein, wie viele Anwendungen OpenSSL verwenden), aber was ist der Grund dafür?Was ist anders zwischen mehrerenanwendungen mit Shared Library Code und mehrereFäden den gleichen Code teilen? Ich schreibe seit einigen Jahren erfolgreich Multithread-Anwendungen und es ist mir ein Anliegen, dass ich keine Antwort auf diese Frage finden kann.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage