在Linux上,在C / C ++程序中,如果我不关心在“select”中使用我的eventfd,最好使用eventfd_read / write(使用EFD_SEMAPHORE标志)还是sem_wait / post?
答案 0 :(得分:4)
sem_wait
/ sem_post
完全是用户空间,除非sem_wait
阻止或sem_post
发布到有服务员的信号量。即便如此,他们执行的系统调用也是内核中最快的路径。
另一方面,任何使用文件描述符和io进行同步的东西都充满了系统调用,而且由于io的巨大复杂性,它们是内核中最慢的路径。
如果您不需要选择并且您正在编写多线程或多进程代码,我认为使用信号量而不是eventfd的选择是明智的选择(对于那些不熟悉俚语的人来说,这是显而易见的选择) )。