首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏后端开发技术

    揭开ypipe/yqueue的神秘面纱:无锁消息队列的潜力

    _;std::condition_variable ypipe_cond_;ypipe_t<int, 100> yqueue;void *yqueue_producer_thread(void *argv ,yqueue本身没有notyfy机制的ypipe_cond_.notify_one();}}std::unique_lock<std::mutex> lock(ypipe_mutex);ypipe_cond ypipe_t用于控制读写位置;这涉及到CAS的问题;读写存在临界点。ypipe_t在yqueue_t的基础上构建一个单写单读的无锁队列。 ypipe_t(const ypipe_t &); const ypipe_t &operator=(const ypipe_t &);};#endif核心要点:(1)T *w:指向第一个未刷新的元素 ypipe_t(const ypipe_t &); const ypipe_t &operator=(const ypipe_t &);};#endif三、总结ypipe_t / yqueue_t

    45910编辑于 2024-10-10
  • 来自专栏腾讯技术工程官方号的专栏

    无锁队列的几种实现及其性能对比

    我们再来看 ypipe。 3.1.2 ypipe——yqueue 的封装 yqueue 负责元素内存的分配与释放,入队以及出队列;ypipe 负责 yqueue 读写指针的变化。 ypipe 的定义: 37     //  Initialises the pipe.  38     inline ypipe_t()  49     //  The destructor doesn't 当c为空时,表示读线程睡眠(只会在读线程中被设置为空) 212 213     //  Disable copying of ypipe object. 214     ypipe_t(const ypipe_t  &); 215     const ypipe_t &operator=(const ypipe_t &); 3.1.3 ypipe 设计的目的 为了批量读写,即用户可以自主的决定写了多少数据之后开启读 我们可以测试一下结果,对一个数据加 200 万次,分别用环形数组、链表、互斥锁、ypipe 队列分别是什么样的性能。 通过测试发现在一读一写的情况下,ypipe 的优势是非常大的。

    8K21编辑于 2022-05-13
  • 来自专栏Python编程 pyqt matplotlib

    PyQt 自定义窗口部件(三)

    form = YPipeWidget() form.signal_valuechanged.connect(valueChanged) form.setWindowTitle("YPipe

    80720发布于 2019-08-14
领券