c++ - 为什么不在 linux 上使用系统定时器(timerfd)?

标签 c++ linux timer

我发现大部分服务器(比如RPG页游服务器)总是自己实现一个定时器,而不是使用系统定时器,比如在linux上,

int timerfd_create(int clockid, int flags)

你能告诉我为什么吗?我认为系统 api(timerfd_create) 可以有更高的性能。

最佳答案

阅读time(7) .事实上,timerfd_create(2)效率很高,但它是特定于 Linux 的。

将 Posix 计时器与 timer_create(2) 结合使用等。可能更便携。

Linux 特定的 timerfd_create(以及 signalfd(2) & eventfd(2) ...)的显着优势是 event loop友好(因为它是一个文件描述符,例如管道或套接字)。但是,大多数事件循环都构建在像 poll(2) 这样的多路复用系统调用之上。它确实接受延迟(毫秒)或较旧的 select(2)

关于c++ - 为什么不在 linux 上使用系统定时器(timerfd)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797000/

相关文章:

c++ - 命名空间中的分号。必要的?

c++11 move 不生效?

c++ - 性能测量 : time vs tick?

javascript - Jquery/Javascript 计时器在刷新时不会重新启动

ios - 在 Swift 中有可变按钮

c++ - 我的缓冲区会被所有连接使用吗?

linux - 内存泄漏会导致我的进程被杀死吗?

linux - 搜索多个文件时不要在 zgrep 输出中打印文件名

python - 困惑搞乱动画

c - 一个简单的 C 波表振荡器