Openssl 在多线程环境中是否需要id_回调?
我认为当在多线程环境中使用时,Openssl 在多线程环境中是否需要id_回调?,openssl,Openssl,我认为当在多线程环境中使用时,locking\u callback足以锁定/解锁OpenSSL的共享数据结构。那么为什么需要id\u回调?也就是说,什么时候OpenSSL需要调用它 我认为在多线程环境中使用时,锁定\ U回调就足以锁定/解锁OpenSSL的共享数据结构,那么为什么需要id \ U回调呢?也就是说,什么时候OpenSSL需要调用它 OpenSSL有大约40个锁。您可以搜索加密锁。您可以搜索CRYPTO\u LOCK\u以了解受保护的组件,如CRYPTO\u LOCK\u UI、CR
locking\u callback
足以锁定/解锁OpenSSL的共享数据结构。那么为什么需要id\u回调
?也就是说,什么时候OpenSSL需要调用它
我认为在多线程环境中使用时,锁定\ U回调就足以锁定/解锁OpenSSL的共享数据结构,那么为什么需要id \ U回调呢?也就是说,什么时候OpenSSL需要调用它
OpenSSL有大约40个锁。您可以搜索加密锁
。您可以搜索CRYPTO\u LOCK\u
以了解受保护的组件,如CRYPTO\u LOCK\u UI
、CRYPTO\u LOCK\u X509\u STORE
、CRYPTO\u LOCK\u RAND
和CRYPTO\u LOCK\u引擎
隐式线程标识符(如使用线程堆栈的堆栈地址)不是唯一的,因为它们可以重用。例如,从手册页:
线程标识符应该被认为是不透明的:任何使用
pthreads调用中以外的线程ID是不可移植的,可能导致
未指明结果
线程ID只保证在进程中是唯一的。线
可以在连接终止线程后重新使用ID,或者
分离的线程已终止。
因此,OpenSSL很难知道如何获取线程的唯一标识符;如果没有每个唯一线程的唯一标识符,则很难正确记录和调试某些多线程问题。由于问题的微妙之处,OpenSSL只是将其推回到程序员那里,以提供唯一的id
使用pthreads时,需要进行一些调整才能正确使用。例如,对于pthreads,您应该提供一个唯一的每线程计数器。看到和
以下是有关堆栈溢出的一些相关问题: