У меня есть ручка трубы, которая была создана как перекрытая. Мне нужно читать и записывать в него данные параллельно. Как я могу этого добиться?
именованный конвейерный сервер, использующий перекрывающийся ввод-вывод На странице документации показан пример того, как читать и писать в несколько каналов, но «это позволяет избежать одновременных операций с одним экземпляром канала».
Как правильно сделать это в C ++ в Windows? Я не могу подать правильный пример или какую-либо помощь по теме.
Основная проблема, с которой я сталкиваюсь, - это обычные блоки ReadFile, когда нет данных для чтения, и в конечном итоге я не могу писать с помощью WriteFile. Я не нашел ни одного метода, который мог бы сказать мне, есть ли что-то, что можно прочитать, что не блокирует. Насколько я понимаю, мне нужно передать структуру OVERLAPPED, но я не знаю, как ее использовать в случае параллельного чтения и записи в один канал (не много).
Это должно быть возможно, как сказано в Синхронный ввод-вывод с перекрытием каналов:
Перекрывающиеся операции позволяют одному каналу одновременно читать и записывать данные, а одному потоку выполнять одновременные операции ввода-вывода на нескольких дескрипторах канала.