gpt4 book ai didi

c++ - eventfd_read/write 与 sem_wait/post

转载 作者:IT王子 更新时间:2023-10-29 01:24:24 26 4
gpt4 key购买 nike

在 Linux 上,在 C/C++ 程序中,如果我不关心我的 eventfd 是否被用于“select”,那么使用 eventfd_read/write(带有 EFD_SEMAPHORE 标志)还是 sem_wait/post 更好?

  • 是否存在任何性能、可靠性和可移植性问题?
  • 由于我的程序使用了一些其他的 eventfd 对象(带有“select”),我认为使用 eventfd 比使用 sem_wait/post 更一致。

最佳答案

sem_wait/sem_post 完全是用户空间,除非 sem_wait block 或 sem_post 发布到具有服务员。即使那样,它们执行的系统调用也是内核中一些最快的路径。

另一方面,任何使用文件描述符和 io 进行同步的东西都充满了系统调用,由于 io 的巨大复杂性,它们是内核中最慢的一些路径。

如果您不需要 select 并且无论如何您正在编写多线程或多进程代码,我认为选择使用信号量而不是 eventfd 是一个明智的选择(即对于那些不熟悉俚语的人来说,这是显而易见的选择).

关于c++ - eventfd_read/write 与 sem_wait/post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com