免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 21160 | 回复: 89
打印 上一主题 下一主题

你经常使用多线程吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-21 15:30 |只看该作者 |倒序浏览
如题
我经常会面临这样的问题。。。。我该使用多线程吗?它真的就比单线程更有效率吗?
搜了几把,
有人说多线程应当用在CPU密集型的程序中,可有人说应当用在IO密集型程序中,最后我也不知道该用在什么地方。。。。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
2 [报告]
发表于 2008-11-21 15:48 |只看该作者
随便一个多线程的书里都有介绍吧。。起码有个初级的例子

论坛徽章:
0
3 [报告]
发表于 2008-11-21 15:53 |只看该作者
原帖由 yangsf5 于 2008-11-21 15:48 发表
随便一个多线程的书里都有介绍吧。。起码有个初级的例子

问题是,不是我不会用它,相反我写过很多多线程程序,关键是现在我发现多线程的效率往往不及单线程,或者,搞死搞活的整出来缺也只带来很小的回报
哎,现在我真的不知道该在什么时候用它。。。。

论坛徽章:
0
4 [报告]
发表于 2008-11-21 15:56 |只看该作者
比如你在某个死循环时刻想吃点儿东西,看个电影..

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
5 [报告]
发表于 2008-11-21 16:05 |只看该作者

回复 #3 alexhappy 的帖子

我知道你会用它。。
我是说那些介绍多线程的书也同时介绍了何时使用多线程比较合适。

你都说了你的东西单线程可以完成,而且多线程版本比单线程效率高不了多少,反而花很多时间去实现,
那你的那些程序就没必要用了呗。

论坛徽章:
0
6 [报告]
发表于 2008-11-21 16:13 |只看该作者

回复 #3 alexhappy 的帖子

搞死搞活了几天了,现在终于知道了为什么多线程在写入文件出现了那么多的异常
也测试验证我的想法

论坛徽章:
0
7 [报告]
发表于 2008-11-21 16:22 |只看该作者
原帖由 yangsf5 于 2008-11-21 16:05 发表
我知道你会用它。。
我是说那些介绍多线程的书也同时介绍了何时使用多线程比较合适。

你都说了你的东西单线程可以完成,而且多线程版本比单线程效率高不了多少,反而花很多时间去实现,
那你的那些程序就没 ...

话虽如此,可是这些都是在我做过之后才知道的,如果在做之前我就知道的话,那我肯定会有别的方案。。。。
现在的问题是,我无法在做之前预测程序的性能,汗。。。。。
比如,处理数据库吧,很多用户请求先传递到我的逻辑服务器上,然后有逻辑服务器上转发给事物处理服务器(在这里处理数据库),逻辑服务器上才用了多线程 + epoll的模式接收用户请求,很自然地,我在事物处理服务器上也用了多线程,结果,我发现,为了同步多用户对数据库中同一数据的修改花费的时间还不如我用单线程来的少。。。。。
一定有些规则的,只不过我还不清楚。。。so,希望高手指点。。。。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
8 [报告]
发表于 2008-11-21 16:47 |只看该作者
“多用户对数据库中同一数据的修改”,你是指对这个加锁同步的开销很大?

你的处理数据只有这一种情况吗?

如果你同时要处理多种事物,大多数事物处理时间很长,如果你只用单线程的话,后来的岂不是要等很久(要等前面的完全处理完,才轮到它)。
当正在处理的事物又在等其他条件的时候,这个时候cpu是空闲的,而你后边的事物却在干等。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
9 [报告]
发表于 2008-11-21 16:48 |只看该作者
“为了同步多用户对数据库中同一数据的修改”,LZ用的数据库难道不支持事物?

论坛徽章:
0
10 [报告]
发表于 2008-11-21 16:58 |只看该作者
原帖由 yangsf5 于 2008-11-21 16:47 发表
“多用户对数据库中同一数据的修改”,你是指对这个加锁同步的开销很大?

你的处理数据只有这一种情况吗?

如果你同时要处理多种事物,大多数事物处理时间很长,如果你只用单线程的话,后来的岂不是要等很 ...

是啊,单单是这种情况倒不难判断。。。可是,情况往往很复杂,大量的同步,互斥。。。。开销很大,而且易出错。。。。

事实上,我经常遇到的问题是,处理大量用户请求,但这些请求处理时间很短的情况,而且,请求都跟数据库有关。。。。开始时跟数据库有关的那块用单线程走的,后来我改成了多线程
没想到,我花了好大的代价却换来性能的下降。。。。好不爽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP