忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
123
最近访问板块 发新帖
楼主: heguangwu

线程性能到达瓶颈,并发还是并行? [复制链接]

论坛徽章:
15
2015七夕节徽章
日期:2015-08-21 11:06:172017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:07:30shanzhi
日期:2016-06-17 17:59:3115-16赛季CBA联赛之四川
日期:2016-04-13 14:36:562016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之新疆
日期:2016-01-25 14:01:34IT运维版块每周发帖之星
日期:2016-01-07 23:04:26数据库技术版块每日发帖之星
日期:2016-01-03 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-10 06:20:00
发表于 2015-12-23 10:32 |显示全部楼层
回复 20# hellioncu
你说的很对,rdkafka本身并不需要一个线程,只是当时考虑是为了控制发送流量避免影响在线应用而做的


   

论坛徽章:
15
2015七夕节徽章
日期:2015-08-21 11:06:172017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:07:30shanzhi
日期:2016-06-17 17:59:3115-16赛季CBA联赛之四川
日期:2016-04-13 14:36:562016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之新疆
日期:2016-01-25 14:01:34IT运维版块每周发帖之星
日期:2016-01-07 23:04:26数据库技术版块每日发帖之星
日期:2016-01-03 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-10 06:20:00
发表于 2015-12-23 10:34 |显示全部楼层
能详细说说线程池+多个FIFO队列的要点吗,另外TBB是一个很大的并行库,能挑出一到两个来具体说明吗
回复 19# demilich


   

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-09-23 06:20:00
发表于 2015-12-24 22:59 |显示全部楼层
新人正学习中的

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-09-23 06:20:00
发表于 2015-12-24 23:00 |显示全部楼层
新人正学习中的

论坛徽章:
0
发表于 2015-12-26 04:04 |显示全部楼层
并发和并行有各自的适用环境.
并发基于系统事件,开销比较小,回调甚至不需要进入事件循环.所以处理读写密集型任务非常出色.
并行有多种方案.
多进程,由于系统内部的隔离机制,稳定性更好,但是进程间通信效率不高.
多线程,由于拥有共享内存,线程间通信的效能不错,但是由此带来的同步问题也很复杂.
由于多线程的开销不小,线程池是必要的.并行的主要目的还是处理计算密集型任务.

至于楼主的案例,建一个线程池,主线程接受消息并往线程池丢数据,池中的工作线程处理任务是很常见的方案.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
发表于 2015-12-29 13:50 |显示全部楼层
这个就是C/C++服务很正常设计。

程序内部按模块划分,通过接口交换数据。

有的模块内部是线程池并发,通过对数据哈希或者轮转的方式分发到多个线程里计算。 而且为了降低锁带来的性能瓶颈,一般尽量避免多线程争夺相同的资源,尽量通过大拆小的思路提高并发计算能力。

论坛徽章:
133
2015年亚洲杯之日本
日期:2015-04-28 13:32:012015年亚洲杯之朝鲜
日期:2015-05-06 10:16:442015年亚洲杯之日本
日期:2015-05-06 10:21:342015年亚洲杯纪念徽章
日期:2015-05-13 17:16:442015亚冠之北京国安
日期:2015-05-13 17:18:292015亚冠之鹿岛鹿角
日期:2015-05-13 17:19:062015亚冠之德黑兰石油
日期:2015-05-27 16:47:402015亚冠之塔什干棉农
日期:2015-05-28 15:24:122015亚冠之卡尔希纳萨夫
日期:2015-06-01 13:52:392015亚冠之柏斯波利斯
日期:2015-06-04 17:37:292015亚冠之阿尔纳斯尔
日期:2015-06-16 11:31:202015亚冠之塔什干火车头
日期:2015-06-23 10:12:33
发表于 2015-12-29 17:55 |显示全部楼层

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2016-06-23 09:11 |显示全部楼层
heguangwu 发表于 2015-12-17 13:52
其实案例我想描述的更清楚一些,因为当时没有时间,现在补充如下:
软件功能描述,通过libpcap抓取Mysql的 ...


你为什么要搞这么多线程,是什么目的?有什么好处?
如果是多核多vcpu的话,一个vcpu一到两个线程就够了,最好是一个线程,如果不需要并发的话

论坛徽章:
13
程序设计版块每日发帖之星
日期:2016-06-29 06:20:00每日论坛发贴之星
日期:2016-08-14 06:20:00操作系统版块每日发帖之星
日期:2016-08-14 06:20:00每日论坛发贴之星
日期:2016-08-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-13 06:20:00程序设计版块每日发帖之星
日期:2016-08-13 06:20:00IT运维版块每日发帖之星
日期:2016-08-13 06:20:00每日论坛发贴之星
日期:2016-08-12 06:20:00数据库技术版块每日发帖之星
日期:2016-08-12 06:20:00程序设计版块每日发帖之星
日期:2016-08-12 06:20:00操作系统版块每日发帖之星
日期:2016-08-12 06:20:00综合交流区版块每日发帖之星
日期:2016-08-09 06:20:00
发表于 2016-08-10 10:59 |显示全部楼层
不懂帮顶~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP