你找的是对的,主要是第2点。放锁、再加锁,有时间缝隙,期间可能会出问题。
我以前看到过Paho MQTT的开源C代码库里就有这种放锁、再加锁的操作。
【 在 fjtg 的大作中提到: 】
: 我粗略地看了一下这个代码,目前来看,感觉有以下问题:
: <1> 应使用 steady_clock 而不是 system_clock;
: <2> 在 get(const Key& key) 方法里面,它先释放read-lock再申请write-lock, 所以,有可能使的原先的iterator无效,即: _lru_list.erase(item->second.second); 有可能是一个无效iterator.
: ...................
--
FROM 221.218.161.*