繁体   English   中英

eventfd_read / write与sem_wait / post

[英]eventfd_read/write versus sem_wait/post

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

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

sem_wait / sem_post完全是用户空间,除非sem_wait阻塞或sem_post发布到有服务员的信号量。 即使这样,他们执行的系统调用也是内核中最快的路径。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM