Я использую pthread в Linux.У меня есть круговой буфер для передачи данных из одного потока в другой.Возможно, циклический буфер - не лучшая структура для использования здесь, но изменение, которое не устранит мою проблему, поэтому мы просто будем ссылаться на него как на очередь.
Всякий раз, когда моя очередь либо заполнена, либо пуста,операции pop / push возвращают NULL.Это проблематично, так как мои потоки запускаются периодически.Ожидание другого цикла потока заняло бы слишком много времени.
Я пытался использовать семафоры (sem_post, sem_wait), но разблокировка при конфликте занимает до 25 мс, что примерно соответствует скорости моего цикла.Я пытался ждать с pthread_cond_t, но разблокировка занимает от 10 до 15 мс.
Есть ли более быстрый механизм, который я мог бы использовать для ожидания данных?
EDIT *
Хорошо, я использовал условные переменные.Я на встраиваемом устройстве, поэтому добавить «больше ядер или процессор» не вариант.Это заставило меня осознать, что повсюду были установлены всевозможные приоритеты потоков, поэтому я разберусь с этим, прежде чем идти дальше