![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后台开发
文章平均质量分 54
ArionHill
这个作者很懒,什么都没留下…
展开
-
多缓存无锁极简实现
双缓冲区方案 双缓冲方案分配两段缓冲区:读(当前)缓冲和写(下一)缓冲。当执行查询操作时,总是读取当前缓冲区;当执行写操作时,总是在下一缓冲区上操作。当写操作执行完成后,交换操作会立刻将当前缓冲区和下一缓冲区交换,这样,最近更新的缓冲区便可供查询使用,旧的查询缓冲区用于写操作。 示例代码: template <typename T> class DoubleBuffer { public: DoubleBuffer():flag(false){} T* write() {原创 2021-11-16 09:38:42 · 1055 阅读 · 0 评论 -
注意:需要留意的函数
snprintf int snprintf ( char * s, size_t n, const char * format, ... ); 该函数的返回值仅可用于判断函数是否执行成功,其大小不能代表s的大小 可以分情况讨论 s < format的长度时 n <= s的长度时:format能够截断至n-1的长度进行拷贝到s并添加结束符\0; 返回值却为format的长度。strlen(s)为n-1;sizeof(s)为s的本身字节数(sizeof所有情况都一样) n > s的长度时:原创 2021-05-20 17:08:32 · 83 阅读 · 0 评论