Я ищу что-то, что можно было бы использовать для опроса (например, select
, kqueue
, epoll
то есть не занятый опрос) в C/С++. Другими словами, мне нужно заблокировать поток, а затем разбудить его в другом потоке с как можно меньше накладных расходов.
A mutex
+ condition variable
работает, но накладных расходов много. A futex
также работает, но только для Linux (или, может быть, нет?). Дополнительная синхронизация не требуется, если сам опрос работает правильно, например. нет гонки, когда я вызываю wait
и wake
в двух потоках.
Изменить: если такой "объект" не существует в FreeBSD, как создать его с помощью встроенных типов и системных вызовов С++ 11?
Edit2: Поскольку этот вопрос перенесен в SO, я хотел бы сделать его более общим (не только для FreeBSD)