生产替代物料_一种替代的多生产者方法

生产替代物料

最近在InfoQ上,Aliasei Papou发表了一篇关于他的一些实验的文章 ,该实验在线程之间进行了高性能的消息交换。 本文中有许多示例,但我将重点介绍多生产者案例。 文章显示的一种优化方法是,如果您知道初始化时拥有的生产者数量,则可以构建一个可以大大减少竞争的结构。 现有的MultiProducerSequencer不具有此约束,这对于大量用例而言是必不可少的。 但是,我想看看如果将这种方法应用于Disruptor,我们可以实现什么。

我要使用的设计是,不是使用MultiProducerSequencer使用单个Disruptor,而是使用每个生产者使用SingleProducerSequencer的每个Disruptor。 为了使所有事件通道进入单个EventHandler,我将需要实现一个自定义EventProcessor,它具有轮询多个SequenceBarrier / DataProvider的能力。 在性能测试的com.lmax.disruptor.support程序包中可以看到此自定义的MultiBufferBatchEventProcesor 。 该类的关键组件是主循环,可以在这里看到:

while (true)
{try{for (int i = 0; i < barrierLength; i++){long available = barriers[i].waitFor(-1);Sequence sequence = sequences[i];long previous = sequence.get();for (long l = previous + 1; l <= available; l++){handler.onEvent(providers[i].get(l), l, previous == available);}sequence.set(available);count += (available - previous);}Thread.yield();}// Lines omitted...
}

这种方法的核心是事件处理器将2个数组传递到其构造函数中:

  • 数据提供者[]; 环形缓冲区数组,用于从中读取数据。
  • SequenceBarrier []; 每个环形缓冲区提供的屏障。

由此事件处理器将构造一个Sequence数组,该数组将用于跟踪来自每个环形缓冲区的已处理事件。 事件循环将遍历序列屏障,以确定是否有任何环形缓冲区具有可读取的数据。 任何可用的数据都将传递到用户提供的事件处理程序上。

为了测试这一点,我创建了ThreeToThreeSequencedThroughputTest ,它启动了三个生产者和一个消费者。 InfoQ文章中提供的代码的方面之一是,每列火车的容量为三长,而“运”则以一长的运动量度。 为了使测试更具可比性,我在环形缓冲区中使用了一个由三个long组成的数组作为条目,并将线程之间移动的事件总数乘以3,以计算出总的“ ops”。

测试结果(英特尔®酷睿™i7-3770 CPU @ 3.40GHz)

干扰者:

Run 0, Disruptor=390,738,060 ops/sec
Run 1, Disruptor=387,931,034 ops/sec
Run 2, Disruptor=397,058,823 ops/sec
Run 3, Disruptor=394,160,583 ops/sec
Run 4, Disruptor=396,767,083 ops/sec
Run 5, Disruptor=394,736,842 ops/sec
Run 6, Disruptor=396,767,083 ops/sec

铁路/火车:

ops/sec       = 243,141,801
ops/sec       = 302,695,445
ops/sec       = 283,096,862
ops/sec       = 273,670,298
ops/sec       = 268,340,387
ops/sec       = 264,802,500
ops/sec       = 262,258,028

显然,这种方法有一些优点。 我正在考虑将此添加到主要Disruptor发行版中。 但是,我仍然需要先解决几个设计问题。

传递给处理程序的序列值是来自源环形缓冲区的值,并且随着事件的流逝可能会上升和下降,我不确定这是否会对用户造成问题。 感觉这是一件相当次要的事情,所以希望我不必担心。 事件处理器目前仅支持yield。 我需要弄清楚如何正确地包含等待策略,因为阻塞等待策略和消费者唤醒会有些麻烦。

这是我们在邮件列表上提到的一个想法,最初我并不特别感兴趣,但是鉴于这种方法有明显的好处,我想我会更认真地对待这个想法。

参考:来自Bad Concurrency博客的JCG合作伙伴 Michael Barker 的替代性多生产者方法 。

翻译自: https://www.javacodegeeks.com/2013/12/an-alternative-multi-producer-approach.html

生产替代物料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021年春季学期期末统一考试 金融统计分析 试题(开卷)

试卷代号&#xff1a; 1013 2021年7月 一、单项选择题&#xff08;每小题2分&#xff0c;共40分。每小题有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1.以下属于商业银行被动负债的是( )。 A.发行债券 B.同业拆借 C.向中央银行借款 D.存款性负债 2.国…

js清除添加的下拉框html,Html下拉框的定义以及JS、Jquary取值、添加和移除

现在有一idtest的下拉框&#xff0c;怎么拿到选中的那个值呢&#xff1f;分别使用javascript原生的方法和jquery方法//multiply设置可以多行显示&#xff0c;size设置默认显示多少行。text1text2code:一&#xff1a;javascript原生的方法1:拿到select对象&#xff1a; var mys…

信干噪比、信噪比

信干噪比 名词定义 信干噪比SINR&#xff08;Signal to Interference plus Noise Ratio&#xff09;&#xff0c;指的是系统中信号与干扰和噪声之和的比。 信号是指来自设备外部需要通过设备进行处理的电子信号。 干扰是指系统本身以及异系统带来的干扰&#xff0c;如同频干扰…

MicroProfile在Jakarta EE时代的作用

自创建以来&#xff0c;MicroProfile赢得了广泛的关注&#xff0c;并制定了各种规格。 最初&#xff0c;它的创建是为了在多个供应商的推动下&#xff0c;以更快的速度推进微服务世界的企业Java。 现在&#xff0c;随着在Eclipse Foundation下将Java EE转换为Jakarta EE&#x…

矢量图标库如何引入html,Iconfont矢量图标库在网站中的使用方法

原标题&#xff1a;Iconfont矢量图标库在网站中的使用方法大家都知道现在移动端网站设计比较热门&#xff0c;由于移动端的网站页面的收缩性要求很高&#xff0c;必然在网页设计中&#xff0c;一些小点的图标&#xff0c;使用图片收缩性&#xff0c;以及美观上并不是很理想&…

2021年春季学期期末统一考试 劳动与社会保障法(本) 试题

试卷代号&#xff1a; 1021 2021年7月 一、单项选择题&#xff08;每小题1分&#xff0c;共10分。在每小题的四个备选答案中&#xff0c;选出一个正确的答案&#xff0c;请将正确答案的序号填在括号内&#xff09; 1.劳动者的劳动权利能力和劳动行为能力一般开始于( )。 A.14周…

弗林斯传输公式、天线温度

这是被称为弗林斯传输公式。这个等式关系 自由空间路径损耗&#xff0c;天线增益和波长 接收和发射功率。这是一个基本 在天线理论方程&#xff0c;应该记住的&#xff08;以及 上述推导&#xff09;。 弗林斯传输方程的另一种有用的形式是给定的公式[2]。自 波长和频率&#…

2021年春季学期期末统一考试 成本管理 试题

试卷代号&#xff1a; 1032 2021年7月 一、单项选择题&#xff08;本类题共20分&#xff0c;每小题2分&#xff09; 1.交互分配法一般在( )分配中使用。 A.直接材料费用 B.辅助生产费用 C.直接工资 D.在产品成本 2.采用品种法进行成本计算时其成本计算期是( )。 A.定期于期末计…

html 垂直线代码,html – Bootstrap 3水平和垂直分隔线

你必须使用Bootstrap吗&#xff1f;这是一个基本的HTML / CSS示例&#xff0c;用于获取不使用任何Bootstrap的外观&#xff1a;HTML&#xff1a;Rich Media Ad ProductionWeb Design & DevelopmentMobile Apps DevelopmentCreative DesignWeb AnalyticsSearch Engine Marke…

马尔可夫决策过程 Markov decision process MDP, 连续时间Markov chain, CMDP(全)

引言 在概率论及统计学中&#xff0c;马尔可夫过程&#xff08;英语&#xff1a;Markov process&#xff09;是一个具备了马尔可夫性质的随机过程&#xff0c;因为俄国数学家安德雷马尔可夫得名。马尔可夫过程是不具备记忆特质的&#xff08;memorylessness&#xff09;。换言…

2021年春季学期期末统一考试 保险学概论 试题

试卷代号&#xff1a;1025 2021年7月 一、单项选择题&#xff08;每小题1分&#xff0c;计10分&#xff09; 1.财产保险合同的保险标的是( )。 A.物质财产及其有关利益 B.财产 C.财产及其有关利益 D.人的寿命与身体 2.保费收入总额占国内生产总值的比重是指( )。 A.保险密度 B…

Spring Boot完成示例

这篇文章提供了一个使用Spring Boot开发松耦合REST服务的完整示例。 使用spring boot&#xff0c;我们可以开发可独立运行的生产就绪Java应用程序&#xff0c;它是独立的应用程序&#xff0c;具有最小的依赖性&#xff0c;并且与其他应用程序的耦合较少。 大多数时候&#xff0…

2021年春季学期期末统一考试 国际公法 试题

试卷代号&#xff1a; 1018 2021年7月 一、单项选择题&#xff08;每题1分&#xff0c;共10分&#xff0c;每题只有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1.关于国际法的效力依据问题&#xff0c;认为国际法的效力源于人类良知、理性和法律意识的…

html文字粒子效果简陋,5个很棒的CSS3文本粒子动画特效

CSS语言&#xff1a;CSSSCSS确定body {padding: 40px 0;font-family: bebas, sans-serif;}body .textcontainer {padding: 40px 0;text-align: center;}body .particletext {text-align: center;font-size: 48px;position: relative;}body .particletext.bubbles > .particl…

最小生成树、最短路径树

一、最小生成树与最短路径树的区别 最小生成树能够保证整个拓扑图的所有路径之和最小&#xff0c;但不能保证任意两点之间是最短路径。 应用如网络部线&#xff0c;把所有的电脑(服务器&#xff1f;&#xff09;都连起来用的网线(光纤&#xff1f;&#xff09;最少&#xff0c…

2021年春季学期期末统一考试 西方经济学(本) 试题

试卷代号&#xff1a; 1026 这里是引用 2021年7月 一、单项选择题&#xff08;在下列各题的备选答案中选择一个正确的&#xff0c;并将其序号字母填入题后的括号里。每题2分&#xff0c;共30分&#xff09; 1.其他因素保持不变&#xff0c;只是某种商品的价格下降&#xff0c;则…

国开文学英语赏析 2021春(2021年7月)

试卷代号&#xff1a; 1062 2021年7月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完考卷和答题纸后才可离开考场。 二、仔细读懂题…

mpvue v-html解决方案,mpvue开发小程序所遇问题及h5转化方案

wx这个对象我们可以结合router和vux封装一下其中的navigateTo&#xff0c;redirectTo等路由及模态框和toast&#xff0c;并在webpack.base.conf配置wx指向该文件,这样我们就能直接使用wx这个对象面的方法不用修改/*webpack.base.conf*/resolve: {extensions: [.js, .vue, .json…

无线发射功率与增益

1. 无线发射功率与增益 无线电发射机输出的射频信号&#xff0c;通过馈线&#xff08;电缆&#xff09;输送到天线&#xff0c;由天线以电磁波形式辐射出去。电磁波到达接收地点后&#xff0c;由天线接收下来&#xff08;仅仅接收很小很小一部分功率&#xff09;&#xff0c;并…

web 项目集成福昕_项目学生:Web服务集成

web 项目集成福昕这是Project Student的一部分。 其他帖子包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 具有Spring数据的持久性和分片集成测试数据 。 早先&#xff0c;我们成功地针对持久性/业务层&#xff08…