Можно ли получить дескриптор файла для семафора или условной переменной?

У меня есть реализация двунаправленного канала сообщений, который для уменьшения накладных расходов я реализовал в виде пары кольцевых буферов сообщений. Чтобы писать от одного конца до другого, вы добавляете указатель на сообщение в один кольцевой буфер и настраиваете для него индексы чтения и записи. Чтобы писать в другом направлении, вы делаете то же самое для другого буфера и так далее. Код небольшой и простой, и он позволяет избежать накладных расходов, связанных с использованием канала или FIFO, хотя, возможно, это могло бы быть лучшим решением в некотором смысле.

Я реализовал опрос по этому поводу, просто проверив, есть ли сообщение, ожидающее чтения, и если не выполнял заданное время ожидания для переменной условия, о которой сигнализируется, когда сообщение добавляется в соответствующий массив.

Теперь У меня есть приложение, которое должно одновременно ждать в сокете (более или менее) и в канале сообщений. Теперь мне жаль, что я не использовал fifo или pipe, но из-за накладных расходов на изменение кода (длинная история), на самом деле нереально переписать его для использования fifo или pipe.

Есть ли способ получить файл дескриптор, связанный с условной переменной? Если это так, то проще реализовать опрос сразу для двух файловых дескрипторов, один для условной переменной, а другой для сокета.

Из любопытства и для того, чтобы сделать этот вопрос более полезным для других с аналогичной проблемой, Можно ли получить дескриптор файла, связанный с семафором, чтобы можно было опрашивать семафор и обычный дескриптор файла одновременно? Регулярное выражение

5
задан AlastairG 2 December 2010 в 13:46
поделиться