关于while(1)的使用

23 views
Skip to first unread message

Blackrose

unread,
Jun 20, 2012, 2:53:57 AM6/20/12
to xiyoulinux
Hi all:
        最近在写一个server进程,然后在main的最后使用了while(1),作为死徇环,以便让程序一直为client服务。现在问题的问题是没有处理动作时,cpu会占用50%,这显然不符合性能要求,程序不用时应该不在占用cpu。后来发现,while(1);这种写法,程序会一直在running状态,所以出现了占用50%的情况。
        本来想在while之间写个sleep,也可解决这个占用的问题。可是,这个server是在等signal的到来,所以sleep不太好,这也就是为什么会用while(1);
        请问大家有什么好的想法,可以解决while(1)引起的cpu占用问题,不胜感谢!

刘洋

unread,
Jun 20, 2012, 7:52:57 AM6/20/12
to xiyoulinux
On Wed, Jun 20, 2012 at 02:53:57PM +0800, Blackrose wrote:
> Hi all:
> �����дһ��server��̣�Ȼ����main�����ʹ����while(1),��Ϊ���߻����Ա�
> �ó���һֱΪclient�������������������û�д��?��ʱ��cpu��ռ��50%������Ȼ��
> �������Ҫ�󣬳�����ʱӦ�ò���ռ��cpu���������֣�while(1);����д���������һ
> ֱ��running״̬�����Գ�����ռ��50%�������
> ��������while֮��д��sleep��Ҳ�ɽ�����ռ�õ����⡣���ǣ����server��
> �ڵ�signal�ĵ���������sleep��̫�ã���Ҳ����Ϊʲô����while(1);
> ���ʴ����ʲô�õ��뷨�����Խ��while(1)�����cpuռ�����⣬��ʤ��л��
>
����û��Ҫ����ĵ���ô��������select����accept֮�ࣿ

Blackrose

unread,
Jun 20, 2012, 9:50:59 AM6/20/12
to xiyoulinux
@刘阳,没有了。catch到signal后,就会fork进程,其他处理在子进程中完成

在 2012年6月20日 下午7:52,刘洋 <yang....@gmail.com>写道:
On Wed, Jun 20, 2012 at 02:53:57PM +0800, Blackrose wrote:
> Hi all:
>         最近在写一个server进程,然后在main的最后使用了while(1),作为死徇环,以便
> 让程序一直为client服务。现在问题的问题是没有处理动作时,cpu会占用50%,这显然不
> 符合性能要求,程序不用时应该不在占用cpu。后来发现,while(1);这种写法,程序会一
> 直在running状态,所以出现了占用50%的情况。
>         本来想在while之间写个sleep,也可解决这个占用的问题。可是,这个server是

> 在等signal的到来,所以sleep不太好,这也就是为什么会用while(1);
>         请问大家有什么好的想法,可以解决while(1)引起的cpu占用问题,不胜感谢!
>
这里没有要阻塞的调用么??比如select或者accept之类?

--
要退订此论坛请发邮件至 xiyoulinux-...@googlegroups.com
更多选项: http://groups.google.com/group/xiyoulinux?hl=zh-CN
提问前建议您阅读:http://www.xiyoulinux.cn/blog/?p=64
也请查看我们的FAQ:http://xiyoulinux.cn/wiki/index.php?title=FAQ

肥猫

unread,
Jun 20, 2012, 11:47:47 PM6/20/12
to Blackrose, xiyoulinux
纯粹等待信号?用wait函数。

肥猫

unread,
Jun 20, 2012, 11:55:27 PM6/20/12
to Blackrose, xiyoulinux
貌似我写错了,不是wait,用pause
Reply all
Reply to author
Forward
0 new messages