当前位置: 技术问答>linux和unix
为什么我的程序多线程要比单线程慢很多呢?
来源: 互联网 发布时间:2015-07-07
本文导语: 我的程序是一个服务器程序,工作线程狂占cpu,在一个工作线程速度还行,system基本不占cpu;在两个线程以上的情况下就会性能急剧下降,同时看top,system也占较多cpu.工作线程内有3-4个锁,还有几个全局变量。工作线程...
我的程序是一个服务器程序,工作线程狂占cpu,在一个工作线程速度还行,system基本不占cpu;在两个线程以上的情况下就会性能急剧下降,同时看top,system也占较多cpu.工作线程内有3-4个锁,还有几个全局变量。工作线程设为绑定的
pthread_attr_setscope(&mapThreadAttr, PTHREAD_SCOPE_SYSTEM); /* 设置为绑定模式 */和非绑定的都是这个现象。
程序运行在双cpu的p4 xeon上,打开了超线程,相当于4个cpu
在单cpu的p4上,打开了超线程,相当于2个cpu,也是如此
pthread_attr_setscope(&mapThreadAttr, PTHREAD_SCOPE_SYSTEM); /* 设置为绑定模式 */和非绑定的都是这个现象。
程序运行在双cpu的p4 xeon上,打开了超线程,相当于4个cpu
在单cpu的p4上,打开了超线程,相当于2个cpu,也是如此
|
查查你这两个线程分别是做什么工作的
如果程序频繁在两个线程之间切换,肯定很耗cpu
如果程序频繁在两个线程之间切换,肯定很耗cpu
|
在等待时用sleep也是不好的习惯,既然有condition这么好的东东,干吗要sleep呢?
|
UP
|
谁讲多线程一定比单线程快?
没有一个人这么讲
在ace的作者,参经就强调不要滥用多线程~~
没有一个人这么讲
在ace的作者,参经就强调不要滥用多线程~~