调用socket.remote_endpoint(boost asio library)线程安全

时间:2018-06-18 16:18:49

标签: c++ boost boost-asio asio

boost :: system :: error_code错误; const boost :: asio :: ip :: tcp :: endpoint endpoint = socket.remote_endpoint(error);

我使用此代码从套接字获取IP,我想知道,因为如果需要互斥锁,则从多个线程调用此代码。其他线程在调用async_write,async_read,socket.shutdown和socket.close时使用套接字对象。目前在该调用周围有一个互斥锁,每次使用套接字对象进行调用时都会使用,但我想删除互斥锁,以减少多线程干扰。

1 个答案:

答案 0 :(得分:0)

在保护套接字对象免受多线程影响方面,基本的asio库不是那么完美,因此我建议保护对socket.remote_endpoint的调用,因为存在套接字socket.remote_endpoint的风险,同时调用它是= crash。 / p>