![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 50
ArionHill
这个作者很懒,什么都没留下…
展开
-
多缓存无锁极简实现
双缓冲区方案双缓冲方案分配两段缓冲区:读(当前)缓冲和写(下一)缓冲。当执行查询操作时,总是读取当前缓冲区;当执行写操作时,总是在下一缓冲区上操作。当写操作执行完成后,交换操作会立刻将当前缓冲区和下一缓冲区交换,这样,最近更新的缓冲区便可供查询使用,旧的查询缓冲区用于写操作。示例代码:template <typename T> class DoubleBuffer {public: DoubleBuffer():flag(false){} T* write() {原创 2021-11-16 09:38:42 · 1055 阅读 · 0 评论 -
线程安全的单例新写法
pthread_once多线程安全pthread_once(pthread_once_t *once, void (*init_routine) (void))在多线程编程环境下,尽管pthread_once()调用会出现在多个线程中,init_routine()函数仅执行一次,究竟在哪个线程中执行是不定的,是由内核调度来决定。Linux Threads使用互斥锁和条件变量保证由pthread_once()指定的函数执行且仅执行一次,而once_control表示是否执行过。#采用pthread_原创 2021-04-21 11:20:14 · 148 阅读 · 1 评论 -
面向对象设计原则
1、依赖倒置原则(DIP)高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定)抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)2、开放封闭原则(OCP)对扩展开发,对更改封闭类模块应该是可扩展的,但是不可修改3、单一职责原则(SRP)一个类应该仅有一个引起他变化的原因变化的方向隐含着类的责任4、Liskov替换原则(LSP...原创 2019-09-24 11:12:49 · 113 阅读 · 0 评论