免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: HeavenTear
打印 上一主题 下一主题

怎样编程降低cpu的利用率 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-08-13 10:36 |只看该作者
使用线程就是要多线程共享 cpu, 要共享就要有谦让, 若你的每个线程不谦让, cpu 再快也没用。
线程执行时间长则要加入 usleep(..)

论坛徽章:
0
22 [报告]
发表于 2006-08-14 10:49 |只看该作者
大家有没有实际的在solaris下的方法,。。。
我的想法是,每次真正read前,判断是否达到CPU的使用threashold,如果超过了,就放弃CPU....
不过感觉这种做法太 ugly。。。有没有比较好的方法,,,
还有我目前没有找到比较好的API获得 CPU的
使用率。。。

论坛徽章:
0
23 [报告]
发表于 2006-08-14 11:36 |只看该作者
有知道的吗?

论坛徽章:
0
24 [报告]
发表于 2006-08-14 11:44 |只看该作者
从头看到尾,感觉是你自己的问题,而且钻牛角尖了。
I/O怎么会让CPU使用率变高?如果只是在I/O,CPU应该是空闲才对。
这个问题都没有搞对,又想着限制CPU使用率,应用程序不需要做这些事情,除非你是大型机。

论坛徽章:
0
25 [报告]
发表于 2006-08-14 12:50 |只看该作者
又要马儿跑得快,又要马儿吃的少。

论坛徽章:
0
26 [报告]
发表于 2006-08-14 14:22 |只看该作者
我原先也碰到过这种事情,多线程I/O,而且是无限循环的。但程序一起来,cpu占有率达到100%,有两种方法可以:一、你使用异步i/o,例如使用select,让内核去等待信号,这样你的程序将处于高效率下;二、如果你的程序不能采用异步i/o,或等待资源,你可以在程序的每个线程的循环语句中添加usleep(),sleep(),短暂得让出cpu资源。

论坛徽章:
0
27 [报告]
发表于 2006-08-14 23:09 |只看该作者

论坛徽章:
0
28 [报告]
发表于 2006-08-15 12:46 |只看该作者
原帖由 boer 于 2006-8-14 14:22 发表
我原先也碰到过这种事情,多线程I/O,而且是无限循环的。但程序一起来,cpu占有率达到100%,有两种方法可以:一、你使用异步i/o,例如使用select,让内核去等待信号,这样你的程序将处于高效率下;二、如果你的程 ...

这个“新手”不简单

论坛徽章:
0
29 [报告]
发表于 2006-08-15 15:07 |只看该作者
原帖由 boer 于 2006-8-14 14:22 发表
我原先也碰到过这种事情,多线程I/O,而且是无限循环的。但程序一起来,cpu占有率达到100%,有两种方法可以:一、你使用异步i/o,例如使用select,让内核去等待信号,这样你的程序将处于高效率下;二、如果你的程 ...

受系统精度限制,休眠最小单位是1个嘀嗒或10个嘀嗒,而一个小循环一般也就需要一个或几个嘀嗒而已,这个间隔对于循环来讲,是相当大的,这样的话就直接导致你的程序计算速度要降低一倍甚至一个数量级;

论坛徽章:
0
30 [报告]
发表于 2006-08-15 15:30 |只看该作者
楼主可以说一下你是什么系统么???

大概什么配置
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP