C++实现句柄多版本过期置old的思路
清泛原创
使用MVCC可以解决。
轻量级的不使用MVCC的话,思路如下:
核心ObjPtr
map<id, ObjPtr> map_;
Get的时候返回最新的ObjPtr;
当ObjPtr有新版本要更新的时候,将map中对应id的ObjPtr中is_old置为true,然后将该位置换一个新的ObjPtr;
这样,之前发布出去的对象自动都是old的;map中最新的对象old是false的。这样就完成了一个简单的多版本。
使用的时候,判断句柄是否过期,过期则重新去map拿一次最新句柄。
轻量级的不使用MVCC的话,思路如下:
核心ObjPtr
map<id, ObjPtr> map_;
Get的时候返回最新的ObjPtr;
当ObjPtr有新版本要更新的时候,将map中对应id的ObjPtr中is_old置为true,然后将该位置换一个新的ObjPtr;
这样,之前发布出去的对象自动都是old的;map中最新的对象old是false的。这样就完成了一个简单的多版本。
使用的时候,判断句柄是否过期,过期则重新去map拿一次最新句柄。
上一篇:C++ 打开文件,以清空覆盖的方式
下一篇:【解决】undefined reference to 'apr_thread_rwlock_destory'、undefined reference to 'apr_initialize'