Я работаю над многопоточным серверным приложением в Linux с использованием библиотеки pthread. Для каждого подключенного клиента есть два потока, поскольку я делаю два соединения с устройством и одним потоком имеет зависимость от других. Если не выполняется определенное условие. Первый цикл потока непрерывно в цикле while. Когда выполняется условие, второй поток устанавливает флаг и первый поток на основе этого, который прерывает цикл while и выполняет требуемые задачи.Как эффективно блокировать поток до тех пор, пока не будет выполнено какое-либо конкретное условие.
Выполняет цикл While непрерывно в потоке, пока конкретное условие не будет удовлетворительным. Если не указать более подходящий подход.
Используйте 'mutex' и' condition'. –
* Выполняет цикл While непрерывно в потоке, пока конкретное условие не будет удовлетворительным. * Нет. Создайте семафор. Попросите второй поток вызвать 'sem_wait()' в этом семафоре. Затем, когда первый поток удовлетворяет условию, вызовите его 'sem_post()'. Или просто используйте один поток. –
Можете ли вы указать, что такое «особое» состояние? Вы хотите дождаться, когда файл/сокет будет читать или писать? Или это «флаг», который задан в другом потоке? Ожидаете ли вы только одно (простое) условие или ваше состояние более сложное (например, чтение из одного файла, запись в сокет и, кроме того, флаг из другого потока)? Также это поможет, если вы разместите (части) вашего источника. –