随笔分类 -  C++

上一页 1 2
C++相关的知识
通过atomic_flag简单自旋锁实现简单说明标准库中锁使用的memory_order
摘要:在使用标准库中的加锁机制时,例如我们使用std::mutex,写了如下的代码(下面的代码使用condition_variable可能更合适) 我们知道如果先运行线程1的代码,也就是说线程1获得了锁,进行了准备资源的操作。然后运行线程2,也就是说线程2之后获得了锁,可以知道线程1加锁区域的代码已经执行 阅读全文
posted @ 2018-03-12 16:39 月落无影 阅读(774) 评论(0) 推荐(0)
基于folly的AtomicIntrusiveLinkedList无锁队列进行简单封装的多生产多消费模型
摘要:1.基于folly的AtomicIntrusiveLinkedList略微修改的无锁队列代码: 2.基于上面无锁队列的封装 3.测试用代码: 4. 基于AtomicIntrusiveLinkedList插入操作可以一次插入一个节点,而移出操作则会一次移出多个节点,如果每个消费队列都使用一个Atomi 阅读全文
posted @ 2018-03-09 20:14 月落无影 阅读(829) 评论(1) 推荐(0)
folly无锁队列,尝试添加新的函数(续)
摘要:基于上一篇文章,dropHead取出节点后,删除节点,会出现内存访问的问题。按照这个逻辑,如果将移出的节点保存到一个无锁队列中,然后在需要节点的时候,从这个备用的无锁队列中取出节点,那么应该就可以避开之前的问题,现在重要的是,判断在程序运行 过程中,备用的琐碎队列的大致长度,会不会需要耗费很多的资源 阅读全文
posted @ 2018-02-28 17:58 月落无影 阅读(371) 评论(2) 推荐(0)
folly无锁队列,尝试添加新的函数
摘要:1. folly是facebook开源的关于无锁队列的库,实现过程很精妙。folly向队列中添加节点过程,符合标准库中的队列的设计,而取出节点的过程,则会造成多个线程的分配不均。我曾经试着提供一次 取出一个节点的函数,虽然存在一些问题,不过还是有很多可以学习的地方。我新增的函数,在下面代码中,会在注 阅读全文
posted @ 2018-02-20 11:18 月落无影 阅读(1357) 评论(2) 推荐(0)

上一页 1 2