微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实现繁忙循环的最佳方法?

什么是实现繁忙循环的最佳方式? 纠正我,如果我错了?

while (1); // obvIoUsly eats cpu. while (1) { sleep(100); } // Not sure if it is the correct way ?

共享对象的实际目的

用户使用C#System.DirectoryServices在远程Windows服务器上进行pipe理

linux共享库支持multithreading应用程序callback

'“SDL.h”编译时没有find这样的文件或目录“

如何在Unix套接字编程中获得本地IP地址和端口?

为了做一个无限的等待,对于一个信号(还有什么)是pause()系统调用。 你必须把它放在一个循环中,因为每当一个信号被传递时它就会返回(总是以-1和errno设置为EINTR):

while (1) pause();

令人好奇的是,AFAIK是唯一被记录为永远失败的POSIX函数

更新 :感谢dmckee,在下面的评论中, sigsuspend()也总是失败。 它和pause() ,但是更友好。 不同之处在于它具有参数,所以除了EINTR之外,它可以通过EFAULT失败。

忙碌循环是永不停止的循环,并不断检查某些情况。 小的睡眠足以避免100%的cpu使用率。

实现繁忙等待的最好方法是不执行它。 而不是它,你可以使用阻止调用或回调。

Linux已经有一段时间了(POSIX 1.g) pselect了。 如果您使用信号处理程序或用户定义的信号,我认为这是值得调查的。 它也解决了一些其他方法中出现的微妙的竞争条件。

我知道你提到了“忙碌的循环”,但是我认为一个“阻塞循环”就是你所追求的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐