gpt4 book ai didi

c++ - OpenSSL-多线程环境-C++

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:13 32 4
gpt4 key购买 nike

我正在使用非阻塞套接字和OpenSSL 1.1.0创建一个简单的Web服务器。

客户端请求在4个线程内处理,并且这些线程是使用C ++(std::thread)创建的。

我的问题是:我们可以使用C ++线程使每个客户端请求的OpenSSL线程安全吗?

我问这是因为我发现了这一点:


  *)OpenSSL现在使用新的线程API。不再需要
       设置锁定回调以在多线程环境中使用OpenSSL。那里
       有两种受支持的线程模型:pthread和Windows线程。它是
       还可以在编译时为“无线程”配置OpenSSL。的
       旧的线程API应该不再使用。功能已经
       替换为“无操作”兼容性宏。
       [亚历山德罗·格迪尼,马特·卡斯韦尔]

最佳答案

简而言之,默认情况下,openssl不是线程安全的,但是您可以使用一些带有锁(std :: lock_guard)的互斥锁(std :: lock_guard)或原子数据类型std :: atomic的锁机制,必须先设置一些回调,但是到目前为止,我现在不记得了,请检查此锁定机制https://github.com/openssl/openssl/blob/OpenSSL_1_0_2-stable/crypto/threads/th-lock.c的示例,并阅读本文,其中有一些示例https://www.openssl.org/blog/blog/2017/02/21/threads/可以参与其中,成瘾的我认为std :: thread在后台使用pthread,但是它可以使用本机(取决于OS)线程机制。

关于c++ - OpenSSL-多线程环境-C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004890/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com