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

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

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了。 如果您使用信号处理程序或用户定义的信号,我认为这是值得调查的。 它也解决了一些其他方法中出现的微妙的竞争条件。

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....