Closed feihongmeilian closed 5 months ago
不会有问题,connection
是从pool中fetch出来的一个局部变量(已经不在pool中了),tmp_connection
也是一个局部变量,所以这里的swap是线程安全的。
后来我注意到重连只是把连接好的connection返回了,并没有更新pool,这样是否会导致pool中失效的连接没有被更新?或者在其他地方有对pool的更新,而我没发现的?
connection已经从pool取出了,后续用完之后,会通过release接口把connection还回到pool中去
Regards
非常感谢作者的回答!我看了是在Guarde的时候设置回去了。
connection_pool或async_connection_pool中,需要重连时,我注意到在重连前就解锁了,同时重连建立成功后,直接交换了智能指针,这是否会有问题?
最开始我以为重连需要更新pool,所以解锁早了,应该在更新完pool后再解锁; 后来我注意到重连只是把连接好的connection返回了,并没有更新pool,这样是否会导致pool中失效的连接没有被更新?是否应该在加大加锁范围,同时交换改为std::swap(tmp_connection, connection);?
或者在其他地方有对pool的更新,而我没发现的?
谢谢!