Повысить очередь сообщений - PullRequest
5 голосов
/ 26 августа 2011

У меня следующий вопрос, связанный с boost :: interprocess :: message_queue.

Как и планировалось, я планирую разделить очередь сообщений между> = 2 процессами.Очевидно, что один из них может произойти сбой, находясь в очереди сообщений.В результате он будет удерживать внутренние блокировки, делая очередь недоступной для других процессов.Как это можно решить?Кажется, нет способа разблокировать используемый внутренний мьютекс.

1 Ответ

0 голосов
/ 10 июля 2014

Мы можем использовать метод ожидания предиката в других процессах (1 мин или более в зависимости от потребности), затем, если это удовлетворяет, принудительно разблокировать очередь вторым процессом, а затем снова заблокировать нажатие и разблокировать после чтения?

для получения более подробной информации см. Ниже ссылку.

http://en.cppreference.com/w/cpp/thread/condition_variable/wait

Редактировать:

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

блокировка scoped_lock (мьютекс);

Таким образом, вы можете разблокировать с использованием предиката по окончании времени и разблокировать его.из другого процесса.

...