Что вы должны сделать в первую очередь, так это убедиться, что вам нужно что-то быстрее. Поскольку передача сигналов pthread реализована с использованием futex, где futex обозначает быстрый мьютекс пространства пользователя, я не думаю, что вы сможете выполнить их.
Если у вас есть ожидающие потоки, по определению вам придется их пробуждать, и этот круговой обход ядра будет источником вашей нежелательной задержки.
Но что вы должны сделать, так это подумать о своей проблеме:
если у вас постоянно есть работа, то ваш рабочий поток всегда занят. Работа будет завершена, когда предыдущая работа будет завершена, и вы не заботитесь о задержке.
Если имеет значение задержка между боссом, обнаружившим событие, и рабочим, начинающим работать, то почему вы используете шаблон босс -> работник?
Я бы посоветовал искать более быструю вещь, когда она вам действительно нужна, сейчас у вас, вероятно, будет гораздо более подробный вопрос. Возможно, я ошибаюсь, но похоже, что вы пытаетесь упреждающе оптимизировать, что, как вы, возможно, знаете, является корнем всего зла. Конечно, плохой дизайн может привести к серьезной переработке, но здесь вы имеете дело с очень маленькой деталью вашего реального дизайнерского решения, которое использует шаблон босс / работник.
Реализуйте свой дизайн с помощью pthread_signal или, возможно, semp_post () / sem_wait (), а затем посмотрите, где на самом деле ваша задержка и действительно ли это проблема.