У меня есть реализация двунаправленного канала сообщений, который, чтобы уменьшить накладные расходы, я реализовал в виде пары циклических буферов сообщений.Для записи с одного конца на другой вы добавляете указатель на сообщение в один циклический буфер и настраиваете для него индексы чтения и записи.Для записи в другом направлении вы делаете то же самое для другого буфера и так далее.Код небольшой и простой, и он позволяет избежать накладных расходов на использование канала или fifo, хотя, возможно, это могло бы быть лучшим решением в некоторых отношениях.
Я провел опрос по этому вопросу, просто проверив, было лисообщение, ожидающее чтения, и если не выполняется временное ожидание для условной переменной, которая получает сигнал при добавлении сообщения в соответствующий массив.
Теперь у меня есть приложение, которому нужно ждать в сокете (подробнееили меньше) и одновременно на канале сообщений.Мне бы хотелось, чтобы я использовал fifo или pipe, но из-за накладных расходов при изменении кода (длинная история) не реально переписать его для использования fifo или pipe.
Есть ли способполучить дескриптор файла, связанный с условной переменной?Если это так, то проще провести опрос сразу по двум файловым дескрипторам, один для условной переменной и один для сокета.
Из любопытства, что делает этот вопрос более полезным для других людей с похожей проблемой,Можно ли получить дескриптор файла, связанный с семафором, чтобы вы могли одновременно опрашивать семафор и обычный дескриптор файла?