调用 socket.remote_endpoint(boost asio library) 线程安全
Call to socket.remote_endpoint(boost asio library) thread safety
boost::system::error_code 错误;
常量 boost::asio::ip::tcp::endpoint 端点 = socket.remote_endpoint(错误);
我正在使用这段代码从套接字获取 IP,我想知道,因为这段代码是从多个线程调用的,如果它需要互斥锁。其他线程调用 async_write、async_read、socket.shutdown 和 socket.close 时使用套接字对象。目前,该调用周围有一个互斥锁,每次使用套接字对象进行调用时都会使用它,但我想删除互斥锁,以便减少多线程干扰。
基本上,asio 库在保护套接字对象不受多线程影响时并不是那么完美,所以我建议保护对 socket.remote_endpoint 的调用,因为存在 socket.shutdown 被调用的风险同时 = 崩溃。
boost::system::error_code 错误; 常量 boost::asio::ip::tcp::endpoint 端点 = socket.remote_endpoint(错误);
我正在使用这段代码从套接字获取 IP,我想知道,因为这段代码是从多个线程调用的,如果它需要互斥锁。其他线程调用 async_write、async_read、socket.shutdown 和 socket.close 时使用套接字对象。目前,该调用周围有一个互斥锁,每次使用套接字对象进行调用时都会使用它,但我想删除互斥锁,以便减少多线程干扰。
基本上,asio 库在保护套接字对象不受多线程影响时并不是那么完美,所以我建议保护对 socket.remote_endpoint 的调用,因为存在 socket.shutdown 被调用的风险同时 = 崩溃。