Вопросы по теме 'condition-variable'

Каков самый быстрый метод опроса очереди без блокировки?
Скажем, у нас есть незаблокированная очередь с одним потоком-поставщиком и одним потоком-потребителем, и что производитель может долгое время не производить никаких данных. Было бы полезно позволить потребительскому потоку спать, когда в очереди...
854 просмотров

Пример использования boost::condition::timed_wait
Есть ли у кого-нибудь пример того, как проще всего использовать boost::condition::timed_wait? Есть несколько тем по теме здесь , здесь и здесь , но ни один из них не содержит рабочего примера. А документация boost, как обычно, довольно скудна.
29310 просмотров

Управление многопоточным потоком с помощью condition_variable
Я еще не окунулся в многопоточность С++ 11, но я пытаюсь, чтобы несколько потоков ждали некоторого события в основном потоке, а затем все продолжались одновременно (обрабатывая то, что произошло), и снова wait , когда они закончили обработку......
2390 просмотров

C / C ++ - кольцевой буфер в разделяемой памяти (совместим с POSIX)
У меня есть приложение, в котором производители и потребители («клиенты») хотят отправлять широковещательные сообщения друг другу, то есть отношения n:m . Все могут быть разными программами, поэтому это разные процессы , а не потоки. Чтобы...
3485 просмотров
schedule 13.05.2024

сигнализация условных переменных
По этой ссылке здесь , в функция приращения, условная переменная сигнализируется перед фактическим увеличением счетчика (от нуля). Должен ли сигнал не вызываться после увеличения счетчика? Или вызов ожидания в функции decrement_count не...
163 просмотров

Общий список, несколько условий, одна или несколько переменных условия?
Учтите, что у вас есть список: class CLIENTS { public: CLIENTS(); ~CLIENTS(); bool addClient(); bool removeClient(); bool getDataFromClientObj(unsigned int id); bool storeDataInClientObj(unsigned int id); private: //...
462 просмотров

ConditionVariable предотвращает одновременный запуск обоих потоков.
Я пытаюсь обеспечить синхронизацию между парой потоков Android для целей программирования игр. Я назначил игровой поток, который выполняет большинство задач, и поток рендеринга, которому поручено подкачивать буферы и рендерить. Когда я впервые...
357 просмотров

Ожидание потока C ++ 11
Класс Thread.h реализует метод run, как класс Thread в Java, поэтому каждый класс, наследующий Thread, реализует run. В приведенном ниже примере запустите два потока: Producer и Reader, первый (Producer) напечатает счетчик в бесконечном цикле,...
531 просмотров

Итак, зачем Monitor нужна условная переменная?
Когда вы посмотрите на класс Monitor C#, который используется под капотом ключевого слова lock , вы обнаружите, что в его реализации у вас есть условная переменная и мьютекс. Мьютекс приобретается при входе нового потока, если он еще не получен...
312 просмотров

Блокировка Python: следует ли помещать задачи затрат времени в блокировку или условную переменную?
should_go = False cv = Condition() while True: with cv: if not should_go: cv.wait() if should_go: # process_time_cost_tasks() should_go = False def request(): with cv: should_go =...
60 просмотров
schedule 21.02.2022

Понимание std::condition_variables
Я пытаюсь понять поток condition_variable, когда у меня есть более одного потока, ожидающего выполнения. Насколько я понимаю, все потоки попытаются захватить уникальную блокировку, один из них получит ее, а затем перейдет к ожиданию (), если вы...
276 просмотров
schedule 08.09.2022

Обработка исключений для ‹mutex› и ‹condition_variable›
Предполагая никакого неопределенного поведения не происходит, зависаний не бывает, мьютексы блокируются и разблокируются в правильном порядке правильными потоками правильное количество раз, нерекурсивные мьютексы не блокируются несколько...
1929 просмотров

Переменная условия ожидает нескольких мьютексов
У меня есть std::condition_variable_any , который ожидает пользовательской блокировки, которая представляет собой композицию из двух мьютексов (один std::mutex и один с разделяемой блокировкой std::shared_mutex ). Его unlock() операция просто...
3660 просмотров

Потокобезопасные очереди и ложные пробуждения
В настоящее время я читаю книгу о многопоточности в C++. В одной из глав я нашел исходный код потокобезопасной очереди. Он построен примерно так: template<typename T> class QueueThreadSafe { private: std::mutex m_mutex;...
273 просмотров

синхронизация потока с использованием мьютекса и условной переменной
Я пытаюсь реализовать многопоточное задание, производителя и потребителя, и в основном я хочу, чтобы когда потребитель заканчивал данные, он уведомлял производителя, чтобы производитель предоставлял новые данные. Сложность в том, что в моей текущей...
1337 просмотров

Пожалуйста, объясните использование условных переменных в потоках C++ и почему нам нужно использовать `unique_lock` и `mutex` вместе с этим.
Я имею в виду этот конкретный фрагмент кода: этот код в основном состоит из трех потоков. 1. Выполнение некоторого рукопожатия с сервером. 2. Загрузка данных из XML-файлов. 3. Выполните обработку данных, загруженных из XML. Как мы видим, Задача 1...
9758 просмотров
schedule 04.10.2023

Как вообще правильно бороться с ложными пробуждениями?
Среди приведенных ниже вариантов есть ли какой-либо правильный способ борьбы с ложными пробуждениями при использовании условных переменных? 1) Поместите wait(unique_lock_ul) в бесконечный цикл while , используя логическое значение...
1939 просмотров

Нужно ли проверять ложные пробуждения условной переменной в этой ситуации чтения-записи?
Насколько я понимаю условные переменные, вам обычно нужно проверять ложные пробуждения. Например, рабочий поток может проснуться при уведомлении переменной условия, хотя на самом деле не существует готового к выполнению задания. Итак, мы делаем...
127 просмотров

Должен ли поток всегда использовать цикл while для хранения оператора pthread_cond_wait?
Я понимаю, что в pthreads могут возникать ложные пробуждения потоков. Следующее обсуждение было интересным и информативным: Почему pthread_cond_wait имеет ложные пробуждения? . Мой вопрос может быть очевидным, но я хочу убедиться, что меня...
44 просмотров
schedule 20.01.2024

Почему POSIX стандартизирует семафор как системный вызов, но оставляет мьютекс и условную переменную для Pthread (уровень пользователя)
Я придумал этот странный вопрос, который не давал мне покоя. Почему POSIX стандартизирует поддержку семафора как системного вызова, но оставляет условную переменную и мьютекс для библиотеки pthread? При чем тут разделение ответственности? Почему...
222 просмотров