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

Как я могу улучшить свое поведение в реальном времени в многопоточном приложении, используя pthreads и условные переменные?
У меня есть многопоточное приложение, использующее pthreads. У меня есть блокировка mutex() и условные переменные(). Есть два потока, один поток производит данные для второго потока, рабочего, который пытается обработать полученные данные в режиме...
517 просмотров

О семафорах и условных переменных
Я действительно не понимаю разницы между семафорами и условными переменными... Что можно использовать с потоками, а что нельзя, когда что использовать?
203 просмотров

Безопасное прерывание блокирующей операции C++11
У меня есть std::thread , который использует asio Boost для чтения из последовательного порта: std::atomic<bool> quit(false); void serialThread() { try { asio::io_service io; asio::serial_port port(io);...
504 просмотров

Как ждать любой условной переменной?
pthread_cond_wait позволяет нам ждать, пока переменная условия не получит сигнал. Однако есть ли шанс дождаться, пока какая-либо из двух условных переменных не получит сигнал? Причина, по которой я спрашиваю, заключается в том, что у меня...
184 просмотров

Почему boost::timed_wait всегда блокируется при вызове с абсолютным временем?
Я пытаюсь понять, как использовать timed_wait . Я нашел только несколько примеров ( здесь и здесь ), и у меня возникла проблема при вызове с абсолютным временем. Следующий код является упрощенным примером, на самом деле все это происходит внутри...
451 просмотров
schedule 23.12.2023

Какие ОС/платформы реализуют оптимизацию морфинга ожидания?
Какие основные ОС/платформы реализуют морфинг ожидания? Этот вопрос возник, когда я заметил, что нет четкой передовой практики о том, следует ли сигнализировать условную переменную с заблокированным мьютексом или нет. Отношение типичная...
259 просмотров

c#: как реализован Monitor.Wait?
Как реализован метод Monitor.Wait() внутри класса system.threading.monitor C#? https://www.codeproject.com/Articles/28785/Thread-synchronization-Wait-and-Pulse-demystified Концептуально я представляю что-то вроде этого: class Monitor {...
992 просмотров
schedule 03.02.2024

разблокировать мьютекс после condition_variable::notify_all() или до?
Просматривая несколько видео и пример документации мы разблокируем мьютекс перед вызовом notify_all() . Будет ли лучше вместо этого называть его после? Общий способ: Внутри потока уведомлений: //prepare data for several...
1311 просмотров
schedule 29.10.2023

Установка settimer() и SIGALRM, когда условная переменная не сигнализируется
У меня есть несколько практических вопросов о settimer() и SIGALRM и о том, как они работают. Допустим, у меня есть созданные темы: (ОТРЕДАКТИРОВАНО) #define _POSIX_SOURCE #include <stdio.h> #include <stdlib.h> #include...
33 просмотров

0 как тайм-аут в std::condition_variable::wait_for
Например, у меня есть следующий код: void waitForResponse(const std::optional<int64_t>& ms){ std::unique_lock lk{_mtx}; _cv.wait_for(lk, std::chrono::milliseconds{ms ? *ms : 0}, []() { return someCondition; }...
565 просмотров

Предотвращение потерянного пробуждения, когда обновление условия является блокирующей функцией
Я пишу цикл событий, который переходит в спящий режим, когда нет работы, ожидая переменной условия «работа для выполнения» ( work_to_do ). Эта условная переменная может быть уведомлена разными потоками на основе различных событий. Когда событие...
286 просмотров
schedule 28.01.2024

Поток ожидает сигнала, но не получает его из-за блокировки мьютекса
Итак, я делаю программу с одним основным потоком (мой основной), который создает второй. Второй должен дождаться сигнала и запустить его. Мэйн конечно ждет присоединения. У меня проблема с пониманием того, как мой main может блокировать мьютекс,...
19 просмотров