linux c++
文章平均质量分 93
junkangchen
这个作者很懒,什么都没留下…
展开
-
folly::ThreadCachedInt源码分析
ThreadCachedInt概览ThreadCachedInt是一个适合写多读少的整数类,它采用ThreadLocalPtr保存每个线程本地一个整数值,写请求只会改写线程本地的整数,当要用读整个整数的时候,会用ThreadLocalPtr的遍历方法,返回全部线程本地的整数和。这样写场景性能会比原子整数性能高很多,适合统计的场景,例如统计连接数,已用连接数大小等等。ThreadCachedInt组成ThreadCachedInt由三个变量组成class ThreadCachedInt.原创 2020-10-28 21:05:37 · 392 阅读 · 0 评论 -
folly::AtomicHashMap实现分析
官方介绍Efficiently thread safe for inserts (main point of this stuff),wait-free for lookups. 插入和查找都是wait-free的You can erase from this container, but the cell containing the key willnot be free or reclaimed.可以删除 但是实际上内存不会删除clear()函数为把全部元素清楚,只能一个线程调用...原创 2020-10-25 11:25:52 · 970 阅读 · 0 评论 -
hazptr folly
class A : public folly::hazptr_obj_base<A, atomic>{public: A(int val):a(val){} int a;};atomic<A*> ptr;{folly::hazptr_holder<atomic> h;h.get_protected(ptr);//读的时候 ,会标记在某个地方 表示有个地方在读}执行析构函数再删除标记update的时候执...原创 2020-10-18 13:40:14 · 334 阅读 · 0 评论 -
原子共享指针atomic_shared_ptr
atomic_shared_ptr{mutable AtomicStruct<PackedPtr, Atom> ptr_;//前48位存共享指针的指针,16位存计数}获取指针函数是loadSharedPtr load(std::memory_order order = std::memory_order_seq_cst) constnoexcept {auto local = takeOwnedBase(order);return get_shared_ptr(.原创 2020-10-18 13:39:49 · 2022 阅读 · 0 评论 -
hazard pointer原理
简单来说,hazard pointer是个无锁指针,其原理是获取指针对象时将指针记录下来(通常在一个list上),update时放入一个待回收的list上,并尝试释放原来的对象,如果此时对象指针没有被引用,则释放待回收的List thread-local 要遍历hold住的对象list 全局唯一 (cas)要遍历...原创 2020-10-09 10:34:06 · 599 阅读 · 0 评论 -
条件变量不丢消息
在陈硕大大的文章提到,条件变量不丢消息的规范:条件变量只有一种正确使用的方式,几乎不可能用错。对于 wait 端:1. 必须与 mutex 一起使用,该布尔表达式的读写需受此 mutex 保护。2. 在 mutex 已上锁的时候才能调用 wait()。3. 把判断布尔条件和 wait() 放到 while 循环中。对于 signal/broadcast 端:1. 不一定要在 mut...原创 2018-08-23 11:20:22 · 182 阅读 · 0 评论 -
effective STL 笔记
STL这块一直没有好好总结,开发业务时有时比较急其实有时也没用好STL的感觉,感觉代码看起来好丑= = 、决定重新再翻一次这本书总结一下,想到什么就派生一下,不一定都是书上的内容 (有空就上来更新)第1条:慎重选择容器类型(1)容器的分类标准STL序列容器:vector,string,deque,list标准STL关联容器:set,multiset,map,multimap非标准序列容器...原创 2018-10-16 22:07:10 · 254 阅读 · 0 评论