E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
无锁队列
无锁数据结构之——线程安全的SPSC队列
在其论文【论文】中证明了,在遵守【顺序一致性】内存模型的计算机中,单生产者单消费者(SPSC)先进先出队列中的锁是可以去除的,从而得到了一个
无锁队列
,并第一次给出了并发无锁先进先出(ConcurrentLock-freeFIFO
aiYuqiong
·
2020-09-12 07:52
并发
无锁队列
学习(单生产者单消费者模型)
1、引言本文介绍单生产者单消费者模型的队列。依据写入队列的内容是定长还是变长,分为单生产者单消费者定长队列和单生产者单消费者变长队列两种。单生产者单消费者模型的队列操作过程是不须要进行加锁的。生产者通过写索引控制入队操作,消费者通过读索引控制出队列操作。二者相互之间对索引是独享,不存在竞争关系。例如以下图所看到的:2、单生产者单消费者定长队列这样的队列要求每次入队和出队的内容是定长的。即生产者写入
weixin_33976072
·
2020-09-12 07:11
单生产者单消费者循环
无锁队列
#ifndef_CREAD_WRITE_QUEUE_H_#define_CREAD_WRITE_QUEUE_H_/*队列尺寸*/#defineDEFAULT_QUEUE_SIZE12/*Max_Count=4096*//*Size最大30,默认为12*/templateclassCRead_Write_Queue{public:enum{Max_Count=1<
mrcjiong
·
2020-09-12 06:40
C/C++
一种高效无锁内存队列的实现
Disruptor是LMAX公司开源的一个高效的内存
无锁队列
。这两天看了一下相关的设计文档和博客,下面尝试进行一下总结。第一部分。引子谈到并发程序设计,有几个概念是避免不了的。
清风Baron
·
2020-09-12 01:11
消息队列
【锁】
无锁队列
、自旋锁队列、互斥锁队列性能对比测试
介绍
无锁队列
先大致介绍一下
无锁队列
。
bandaoyu
·
2020-09-11 23:56
C/C++
算法
服务器压力测试心得
于是乎改为
无锁队列
。(关于
无锁队列
已经记录).修改完毕后,发现了如下几个问题:1:业务处理线程消耗大量的CPU时间,因为采用了轮询,一直空跑
tongdajiu
·
2020-08-26 14:40
linux
【3.工程开发】-mq-ZeroMQ/nanomsg
并发原子通信(storm一个任务一个线程,线程间通信,管道模式,
无锁队列
=》后来storm改用了netty)。简单的消息队列(队列满就不能发了),不保证可靠性。官方:http://z
梦想家
·
2020-08-24 15:38
zeromq
DPDK ring简单说明
ring是一个环形
无锁队列
,支持多生产者多消费者操作,所以对于队列的操作构成了模块的主要接口。ring的实现在文件rte_ring.c和rte_ring.h中。
weixin_30551963
·
2020-08-24 03:31
【DPDK】【ring】从DPDK的ring来看x86
无锁队列
的实现
DPDK不仅是一个加速网络IO的框架,其内部还提供众多的功能组件,rte_ring就是DPDK内部提供的一种
无锁队列
,本篇文章将从使用的角度出发阐述DPDK的ring怎么用?
胖子依然6
·
2020-08-24 02:09
dpdk介绍系列之ring
DPDK所提供的ring本质上是一个FIFO的
无锁队列
,支持单生产者/单消费者/多生产者/多消费者等多种操作模式,同时也支持burst模式来进行以上操作。
心似白云
·
2020-08-24 01:02
dpdk研究
单生产者单消费者模式的
无锁队列
实现
#ifndefFIFO_H#defineFIFO_HstructFIFO{void**buffer;unsignedintsize;unsignedintin;unsignedintout;};structFIFO*FIFO_alloc(unsignedintsize);unsignedintFIFO_put(structFIFO*FIFO,void**obj_table,unsignedintn
遥望未来_cheerup
·
2020-08-22 22:50
无锁队列
共享内存
无锁队列
的实现
共享内存
无锁队列
的实现躲在树上的数据库2017-11-06211标签:消息队列,
无锁队列
作者:范健导语:共享内存
无锁队列
是老调重弹了,相关的实现网上都能找到很多。
壮二宝
·
2020-08-21 16:00
C/C++
网络
boost
无锁队列
queue
boost基本库包含很多实用的类库,比如队列,以下是高性能queue的简单例子1.创建工程,然后设置头文件和lib库的路径,值得注意的是,Debug时必须选择“多线程调试(/MTD)”,Release时选择"多线程(/MT)";2.包含头文件#include#include#include#includeusingnamespaceboost;usingnamespaceboost::thread
zhuxian2009
·
2020-08-21 12:41
VC++
基础学习
evpp性能测试(3): 对
无锁队列
boost::lockfree::queue和moodycamel::ConcurrentQueue做一个性能对比测试
Englishversion:Theperformancebenchmarkofqueuewithstd::mutexagainstboost::lockfree::queueandmoodycamel::ConcurrentQueueBrief我们使用https://github.com/Qihoo360/evpp项目中的EventLoop::QueueInLoop(...)函数来做这个性能测试
zieckey
·
2020-08-19 22:30
evpp
Programming
log4j2性能提升点
1、log4j1写日志多线程情况是阻塞的,log4j2不会阻塞,生产者只负责生产,通过
无锁队列
ringbuffer的无阻塞内存队列作为缓冲(即使用Disruptor),多生产者多线程的竞争是通过CAS实现
码农生活成长记
·
2020-08-19 07:59
性能提升组件
zeromq源码分析笔记之
无锁队列
ypipe_t
而ypipe_t实质上是一个
无锁队列
,其底层使用了yqueue_t队列,ypipe_t是对yueue_t的再包装,所以我们先来看看yqueue_t是怎么实现的。
joimson
·
2020-08-17 13:29
摘录
[C++]boost提供的几种lock-free方案以及std::atomic实现
无锁队列
boost方案boost提供了三种无锁方案boost::lockfree::queue:支持多个生产者和多个消费者线程的
无锁队列
。
玄冬Wong
·
2020-08-17 03:12
C/C++
Algorithm
CAS操作实现并发的优势、以及实现一个
无锁队列
、怎样解决ABA 问题
一、CAS(Compareandset)简介1.概念:直译:比较和替换。简单来说–>使用一个期望值来和当前变量的值进行比较,如果当前的变量值与我们期望的值相等,就用一个新的值来更新当前变量的值。2.特点:CAS是一种系统原语也就是所谓的原子操作,由若干条指令完成,用于完成一个功能的过程,原语的执行过程必须是连续的,不允许被中断。CAS有三个操作数,V:旧的内存值,A:预期的值,B:要更新后的值。当
wangle965235568
·
2020-08-16 21:05
操作系统
源码解析 Java 的 compareAndSwapObject 到底比较的是什么?
一、引题 今天在写一个
无锁队列
的小项目时用到了JavaUnsafe包中的compareAndSwapObject方法,也就是比较并交换JavaObject,对于这个方法以前都仅是停留在使用阶段,对底层源码的探究比较少
杨小帆_
·
2020-08-16 20:41
Java
源码解析
五日间,Bug 灰飞烟灭
我印象深刻的一个Bug,是一个服务器网络框架
无锁队列
的Bug。那个Bug连续查找了五天的时间,才最后定位出来。
CSDN 程序人生
·
2020-08-16 12:01
DIOCP开源项目-Delphi高性能
无锁队列
(lock-free)
然而这一切都需要一个队列,这几天都在关注
无锁队列
。[队列]首先是一个队列,简单的队列就是,生产者把数据压入队列(push),消费者通过队列Pop出数据进行处理。
baixia3551
·
2020-08-16 12:17
netty5笔记-线程模型4-
无锁队列
MpscLinkedQueue
NioEventLoop里面使用了MpscLinkedQueue作为taskQueue,替换了父类中默认的LinkedBlockingQueue队列。taskQueue主要用于存放可执行任务,其调用的频率非常高,因此使用一个更高效的队列能带来很大的收益。为什么在NioEvnetLoop里用MpscLinkedQueue替换了LinkedBlockingQueue,是使用了更好的算法?还是通过舍弃一
阳二快跑
·
2020-08-15 09:54
netty学习
锁、CAS操作和
无锁队列
的实现
锁的机制锁和人很像,有的人乐观,总会想到好的一方面,所以只要越努力,就会越幸运;有的人悲观,总会想到不好的一方面,患得患失,所以经常会做不好事。我一直把前一个当作为我前进的动力和方向,快乐充实的过好每一天。常用的锁机制也有两种:1、乐观锁:假设不会发生并发冲突,每次不加锁而去完成某项操作,只在提交操作时,检查是否违反数据完整性。如果因为冲突失败就继续重试,直到成功为止。而乐观锁用到的机制就是CAS
yishizuofei
·
2020-08-15 09:49
Linux
多线程的
无锁队列
对于编写多线程的朋友来说,队列具有天生的互斥性。在队列里面,一个负责添加数据,一个负责处理数据。谁也不妨碍谁,谁也离不开谁。所以,队列具有天生的并行性。[cpp]viewplaincopy#defineMAX_NUMBER1000L#defineSTATUSint#defineOK0#defineFALSE-1typedefstruct_QUEUE_DATA{intdata[MAX_NUMBER]
指尖上星空
·
2020-08-15 09:25
多线程
基于CAS实现的
无锁队列
(多生产者多消费者)
源于1994年10月发表在国际并行与分布式会议上的论文【
无锁队列
的实现.pdf】。CAS(CompareAndSwap,CAS维基百科)指令。
aiYuqiong
·
2020-08-15 09:30
基于
无锁队列
的高并发处理架构
众多周知,对于多线程访问同一段内存,无疑是要加上锁来控制,但是如果面对更高需求的并发,锁就成了并发量增加的瓶颈,下面这个图简单的实现了一种无锁任务处理系统,首先解释使用的模式单生产---------->队列---------->多线程,但单消费者如以下图示:(手绘图,比较懒,懒得用visol),receiver相当于从各个线程收的数据,其实是多个线程收的,但是最终通过一个单线程将各个线程上收的数据
鲁峰2012
·
2020-08-15 07:56
Java
无锁队列
与栈的实现
尽管这篇文章讲的是
无锁队列
,但是引用《Java并发实践》中的一句话,并发环境下,首先应该保证正确性,其次才是性能。在没有证明现情况下性能确实需要提高,且锁机制无法满足的时候,才应该考虑无锁。
棒棒军军长
·
2020-08-15 07:41
基础
一种简单
无锁队列
的实现
Disruptor是内存无锁并发框架,基于一个环数组作为缓冲,详见Disruptor-1.0。下面是自己设计的一个简易版,目前没有发现存在冲突或错误的测试用例。大家可以一起测试下。packagetianshui.lockfree.queue;importjava.io.Serializable;importjava.lang.reflect.Array;importjava.util.concur
icoder
·
2020-08-15 07:18
多线程
Java
分布式
无锁队列
的实现原理
队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据处理压力。结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现。根据操作队列的场景分为:单生产者——单消费者、多生产者——单消费者、单生产者——多消费者、多生产者——多消费者四大模型。其实后面三种的队列,可以归纳为一种多对
loulanyue_
·
2020-08-15 06:27
数据结构
多线程的那点儿事(之
无锁队列
)
【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:
[email protected]
】对于编写多线程的朋友来说,队列具有天生的互斥性。在队列里面,一个负责添加数据,一个负责处理数据。谁也不妨碍谁,谁也离不开谁。所以,队列具有天生的并行性。#defineMAX_NUMBER1000L#defineSTATUSint#defineOK0#defineFALSE-1typedefstruct_
费晓行
·
2020-08-15 06:21
多线程编程
无锁队列
的原理与实现
最近几天在思考
无锁队列
,看了相关文章,也读了一些博客,最后写了一份代码,代码实现对在多线程环境下对队列的读和写是不需要加锁的。
计算机科学家的世界
·
2020-08-15 05:56
编程语言
算法
数学
C++
windows
无锁队列
有关问题【1】
无锁队列
有关问题【一】实现
无锁队列
的关键点有二:1、各个平台的原子操作或者说CAS原语;2、ABA问题的理解和解决。
wuwangxinannana
·
2020-08-15 04:52
探究无锁队列【1】
(11)muduo_base库源码分析:原子性
文章目录1.为什么需要原子性操作2.Atomic.h代码分析3.原子性操作可以实现
无锁队列
4.muduo的编译选项5.Types.h的研究1.为什么需要原子性操作x++;(1)从内存中读x的值到寄存器中
简单生活,简单爱
·
2020-08-14 15:27
开源代码学习
【多线程与并发】如果不用锁机制如何实现共享数据访问
无锁化编程的常用方法:硬件CPU同步原语CAS(CompareAndSwap),如无锁栈、
无锁队列
(ConcurrentLinkedQueue)等待。
Soldier49Zed
·
2020-08-14 09:04
多线程和并发
C++实现的
无锁队列
关于
无锁队列
的实现,网上有很多的文章,其实现原理都来自论文implementing_lock_free.pdf,国内关于
无锁队列
实现介绍的较好的博客:http://coolshell.cn/articles
aaronjzhang_
·
2020-08-13 12:26
C++
algorithm
C++无锁编程资料,
无锁队列
等
好像有人改进了一下设计,参加文章“Cache优化的并发
无锁队列
”http://www.docin.com/p-30332640.html,这论文里面“Fastforwardforef
stormbjm
·
2020-08-11 23:47
数据结构
c/c++
无锁数据结构
来自Boost
无锁队列
分析与实现来自http://www.stroustrup.com/lock-free-vector.pdfhttp://db.in.tum.de/~leis/papers/morsels.pdfhttp
to__to
·
2020-08-11 20:23
dpdk rte_ring
无锁队列
及 内核kfifo
kfifo是内核里面的一个FIFO数据结构,采用环形循环队列的数据结构来实现;它提供一个无边界的字节流服务,最重要的一点是,它使用并行无锁编程技术,即当它用于只有一个入队线程和一个出队线程的场情时,两个线程可以并发操作,而不需要任何加锁行为,就可以保证kfifo的线程安全。kfifo代码既然肩负着这么多特性,那我们先一敝它的代码:structkfifo{unsignedchar*buffer;/*
天涯-晴天
·
2020-08-10 23:28
linux
dpdk
kfif
队列加锁无锁栈实现一例
本篇文章个人在上海游玩的时候突然想到的...这两天就有想写几篇关于队列加锁的笔记,所以回家到之后就奋笔疾书的写出来发布了一、何谓
无锁队列
无锁队列
,望文生义,即不需要加锁的队列;之所以不需要额定加锁,是因为其本身已经是线程安全的
weixin_34357436
·
2020-08-10 23:46
高性能
无锁队列
Disruptor 初体验
原文地址:haifeiWu和他朋友们的博客博客地址:www.hchstudio.cn欢迎转载,转载请注明作者及出处,谢谢!最近一直在研究队列的一些问题,今天楼主要分享一个高性能的队列Disruptor。whatDisruptor?它是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。基于Disruptor开发的系统单线程能支撑每秒600万订单。目前,包括Apache
weixin_33804990
·
2020-08-10 23:33
基于数组的
无锁队列
(译)
原文1引言最近对于注重性能的应用程序,我们有了一种能显著提高程序性能的选择:多线程.线程的概念实际上已经存在了很长时间.在过去,多数计算机只有一个处理器,线程主要用于将一个大的任务拆分成一系列更小的执行单元.以使得当其中某些执行单元因为等待资源而被阻塞的时候剩余的执行单元能继续执行。举个示例,一个网络应用程序,它监听一个TCP端口,当有外部请求到达时,处理请求.对于一个单线程的应用程序来说,只能在
weixin_33701294
·
2020-08-10 23:15
操作系统
数据结构与算法
c#
并发
无锁队列
学习之一【开篇】
1、前言队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据处理压力。结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现。根据操作队列的场景分为:单生产者——单消费者、多生产者——单消费者、单生产者——多消费者、多生产者——多消费者四大模型。其实后面三种的队列,可以归纳为
weixin_33694620
·
2020-08-10 23:15
无锁队列
的环形数组实现
对
无锁队列
的最初兴趣来自梁斌同志的一个英雄帖:http://coderpk.com/。
weixin_30549657
·
2020-08-10 22:02
无锁队列
lock free queue
来源:linux中的kfifo的解释http://blog.csdn.net/linyt/article/details/5764312
无锁队列
的实现-陈皓http://coolshell.cn/articles
Hugo0Chen
·
2020-08-10 21:48
C语言
无锁队列
多线程的那点儿事(之
无锁队列
)
【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:
[email protected]
】对于编写多线程的朋友来说,队列具有天生的互斥性。在队列里面,一个负责添加数据,一个负责处理数据。谁也不妨碍谁,谁也离不开谁。所以,队列具有天生的并行性。[cpp]viewplaincopyprint?#defineMAX_NUMBER1000L#defineSTATUSint#defineOK0#def
sir_zeng
·
2020-08-10 21:16
linux
多线程
并发
无锁队列
学习(数据结构)
提到并行计算通常都会想到加锁,事实却并非如此,大多数并发是不需要加锁的。比如在不同电脑上运行的代码编辑器,两者并发运行不需要加锁。在一台电脑上同时运行的媒体播放放器和代码编辑器,两者并发运行不需要加锁(当然系统调用和进程调度是要加锁的)。在同一个进程中运行多个线程,如果各自处理独立的事情也不需要加锁(当然系统调用、进程调度和内存分配是要加锁的)。在以上这些情况里,各个并发实体之间没有共享数据,所以
root_robot
·
2020-08-10 20:34
数据结构
简略单纯高效的Delphi原子队列
本文供给Delphi一个基于原子操纵的
无锁队列
,简略单纯高效。实用于多线程大吞吐量操纵的队列。科学是使人精力变得大胆的最好路子。可用于Android体系和32,64位Windows体系。
OK_boom
·
2020-08-10 20:33
Delphi
无锁编程与有锁编程的效率总结、
无锁队列
的实现(c语言)
1.无锁编程与有锁编程的效率无锁编程,即通过CAS原子操作去控制线程的同步。如果你还不知道什么使CAS原子操作,建议先去查看相关资料,这一方面的资料网络上有很多。CAS实现的是硬件级的互斥,在线程低并发的情况下,其性能比普通互斥锁高效,但是当线程高并发的时候,硬件级互斥引入的代价与应用层的锁竞争产生的代价同样都是很大的。这时普通锁编程其实是优于无锁编程的。硬件级原子操作使应用层的操作变慢,而且无法
WolfOnTheWay
·
2020-08-10 20:42
Linux
无锁队列
的实现
原文http://coolshell.cn/articles/8239.html关于
无锁队列
的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术
maijian
·
2020-08-10 18:50
一读一写
无锁队列
c++实现
限制一个线程读,一个线程写,不加锁的队列,使用单链表实现,测试环境:centos5.9[root@localhosttest]#cattest.cpp#include#includetemplatestructqnode{structqnode*next;QElmTypedata;};templateclassqueue{public:queue(){init();}~queue(){destro
风云来
·
2020-08-10 17:40
并发
上一页
1
2
3
4
5
6
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他