Я новичок в многопоточных механизмах программирования и межпроцессного взаимодействия.Прерывание процесса с использованием Boost и многопоточности
У меня есть программа (допустим, А), которая ждет входящих данных через async_receive()
в бесконечном цикле.
Теперь я хочу управлять программой A из отдельного процесса (скажем B).
Точнее, я хочу завершить программу A, когда B это сигнализирует. Таким образом, io_service()
в программе A будет отменен, и программа A завершится.
Кажется, что я должен определить поток в программе А ждать сигнала от В.
Мой вопрос заключается в том, что как же я могу получить сигнал от B?
Я попытался использовать message_queue
(mq) (boost/interprocess/ipc/message_queue
). Итак, B ставит сообщение в mq
, но как я могу уведомить программу A для чтения данных из mq
? Возможно, что mq
вызывает обработчик при появлении нового сообщения в en \ dequeued?
Другими словами, я хочу прервать A из B, используя библиотеки Boost. Если бы вы могли дать мне подсказку, вы бы мне очень помогли.
На самом деле прослушивание обратного адреса не является надежным подходом, поскольку существует вероятность того, что пакет потерян, и поэтому A не реагирует на команду выключения. – Nazgol
Вы можете сообщить о завершении работы по TCP для обеспечения надежности. –