Вопросы по теме 'condition-variable'
Как я могу улучшить свое поведение в реальном времени в многопоточном приложении, используя pthreads и условные переменные?
У меня есть многопоточное приложение, использующее pthreads. У меня есть блокировка mutex() и условные переменные(). Есть два потока, один поток производит данные для второго потока, рабочего, который пытается обработать полученные данные в режиме...
517 просмотров
schedule
17.12.2023
О семафорах и условных переменных
Я действительно не понимаю разницы между семафорами и условными переменными...
Что можно использовать с потоками, а что нельзя, когда что использовать?
203 просмотров
schedule
16.04.2024
Безопасное прерывание блокирующей операции C++11
У меня есть std::thread , который использует asio Boost для чтения из последовательного порта:
std::atomic<bool> quit(false);
void serialThread()
{
try
{
asio::io_service io;
asio::serial_port port(io);...
504 просмотров
schedule
31.12.2023
Как ждать любой условной переменной?
pthread_cond_wait позволяет нам ждать, пока переменная условия не получит сигнал.
Однако есть ли шанс дождаться, пока какая-либо из двух условных переменных не получит сигнал?
Причина, по которой я спрашиваю, заключается в том, что у меня...
184 просмотров
schedule
08.02.2024
Почему boost::timed_wait всегда блокируется при вызове с абсолютным временем?
Я пытаюсь понять, как использовать timed_wait . Я нашел только несколько примеров ( здесь и здесь ), и у меня возникла проблема при вызове с абсолютным временем. Следующий код является упрощенным примером, на самом деле все это происходит внутри...
451 просмотров
schedule
23.12.2023
Какие ОС/платформы реализуют оптимизацию морфинга ожидания?
Какие основные ОС/платформы реализуют морфинг ожидания?
Этот вопрос возник, когда я заметил, что нет четкой передовой практики о том, следует ли сигнализировать условную переменную с заблокированным мьютексом или нет. Отношение типичная...
259 просмотров
schedule
30.10.2022
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 просмотров
schedule
31.10.2022
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 просмотров
schedule
06.03.2024
Предотвращение потерянного пробуждения, когда обновление условия является блокирующей функцией
Я пишу цикл событий, который переходит в спящий режим, когда нет работы, ожидая переменной условия «работа для выполнения» ( work_to_do ). Эта условная переменная может быть уведомлена разными потоками на основе различных событий. Когда событие...
286 просмотров
schedule
28.01.2024
Поток ожидает сигнала, но не получает его из-за блокировки мьютекса
Итак, я делаю программу с одним основным потоком (мой основной), который создает второй. Второй должен дождаться сигнала и запустить его. Мэйн конечно ждет присоединения.
У меня проблема с пониманием того, как мой main может блокировать мьютекс,...
19 просмотров
schedule
19.01.2024