вопрос о синхронизации потоков C ++.
Мы предполагаем, что есть 2 pthreads: Thread1 и Thread2.
Thread1 занимается своей задачей и, в некоторых случаях, он должен уведомлять об обновлении состояния в Thread2.
Thread2 занимается извлечением данных из синхронизированной очереди. Таким образом, Thread2 может спать, если очередь пуста.
Как я могу разбудить Thread2 при двух условиях:
Уведомление о новом сообщении в очереди;
или же
практические примеры кода приветствуются
Для простоты заставьте Thread1 вставить уведомление об изменении состояния в качестве задачи в очередь, где оно может быть использовано Thread2. Если уведомление имеет более высокий приоритет, чем обычные рабочие задачи, разрешите Thread1 вставить его в очередь перед другими задачами, сделав его следующим для использования.
Почему бы вам не использовать ту же очередь (но другой код команды) для уведомления thread2? Поток 2 просто ожидает каких-либо данных в очереди в режиме блокировки, для каждого нового сообщения, проверяет его на предмет обновления статуса или данных и выполняет соответствующие действия.