FIFO для общения между потоками - PullRequest
0 голосов
/ 08 января 2020

У меня есть файл с почтовыми адресами, на который я хочу отправить электронное письмо.

Я разделил задания между

  • одной задачей, которая читает файл
  • x другие задачи, которые отправляют электронные письма

Для связи между первой задачей и другими я подумал, что использование FIFO (благодаря posix_mkfifo) было бы отличной идеей, с одним FIFO на каждый "отправка задачи", и циклически проходить через них. Так как иногда мне нужно остановить скрипт, я сохраняю смещение файла адресов после каждого чтения (в первой задаче).

Проблема в том, что когда я закрываю FIFO, смещение может быть в 500-й строке (таким образом, 500 адресов прочитаны и отправлены через FIFO), но, возможно, задачи обработали только 5 строк каждая. Как я могу предотвратить закрытие FIFO на стороне записи от других задач, чтобы они могли обрабатывать свои очереди?

1 Ответ

0 голосов
/ 11 января 2020

я смог решить мою проблему, открыв fifo в режиме чтения / записи вместо чтения только во втором задании

...