Я читал документацию по Linux Futex здесь http://man7.org/linux/man-pages/man2/futex.2.html. В документации сказано
состояние не приобрел, а затем
выполнить операцию futex, которая будит блокированные потоки на флаге блокировки
используется как слово futex (это может быть дополнительно оптимизировано, чтобы избежать
ненужные пробуждения).
На что это намекает? Это говорит о том, что вы можете передать целое число 1 в futex wake, чтобы разбудить только одного официанта (эквивалентно std::condition_variable::notify_one()
) или речь идет о какой-то другой технике оптимизации?
Задача ещё не решена.
Других решений пока нет …