sem_wait
/ sem_post
полностью являются пользовательским пространством, за исключением случаев, когда sem_wait
блокирует или sem_post
отправляет сообщение на семафор с официантом. Даже тогда выполняемые ими системные вызовы являются одними из самых быстрых путей в ядре.
С другой стороны, все, что использует файловые дескрипторы и io для синхронизации, полно системных вызовов, и они являются одними из самых медленных путей в ядре из-за огромной сложности io.
Если вам не нужно выбирать, и вы все равно пишете многопоточный или многопроцессорный код, я думаю, что выбор использования семафоров вместо eventfd не вызывает затруднений (т.е. очевидный выбор для тех, кто не знаком со сленгом ).