Я пытаюсь установить связь между двумя процессами (например, в чате). Каждый процесс имеет собственное окно терминала. Я использую именованные каналы для связи.Связь между двумя процессами с использованием именованных каналов и семафоров
Вот что я сделал:
У меня есть FIFO_FILE под названием "MYFILE". Процесс A пишет новую строку в MYFILE, а процесс B считывает из MYFILE и выводит строку для обработки вывода терминала B. Однако, если процесс B хочет написать новую строку в MYFILE (из того, что я понимаю о семафоре), процесс A будет заблокирован от чтения/записи до MYFILE, пока процесс B не закончит писать.
Я хочу достичь: Когда два процесса хотят писать, никакой процесс не должен блокироваться, когда другой процесс опережает его, записывая в файл.
Единственный способ, я могу думать, это иметь два FIFO_FILEs. Но как добиться этой реализации? Или есть другой способ достичь?
Мне сказали использовать шаблон Consumer-Producer, но я не вижу, как это решит мою проблему.
Любая помощь будет отличной. Благодаря!!
не очень. Но я думал использовать семафоры, чтобы предотвратить другой процесс записи/чтения. – user1420474