Описание тега condition-variable

A synchronisation primitive used in multithreaded programming to wait for a condition to be true.
2 ответа

Использование std::conditional_variable для ожидания условия

Для простоты предположим, что у нас есть только одна условная переменная для соответствия одному условию, которое отражается логическим значением. 1) Почему std::condition_variable::wait(...) снова блокирует мьютекс после того, как "уведомление" был…
2 ответа

Многопоточность Python: нужен совет для синхронизации 2 потоков с помощью условной переменной

Я знаю только основные понятия о многопоточности, и в настоящее время я сталкиваюсь с ситуацией, которая нуждается в некоторой помощи. У меня есть две задачи для завершения, и обе должны выполняться непрерывно. Дело в том, что вторая задача должна з…
02 апр '12 в 22:29
0 ответов

Как ждать булево значение без занятости

У меня есть приложение на Ruby, написанное с использованием DRb, в котором удаленный объект сообщает локальному объекту, что это делается путем переключения логического значения на локальный объект. В настоящее время я жду этого логического значения…
23 мар '13 в 14:45
1 ответ

C++ поток тупик

Я не могу выйти из этого тупика. Сначала позвольте мне объяснить словами, чего я хочу достичь: Main создает поток и ожидает его завершения в первый раз Поток получает блокировку, считывающую из источника столько, сколько он может (заполняет буферы и…
1 ответ

Исключения при использовании mutex и condition_variable

Я пишу программу для чтения данных из файла.txt и использую его в выходной файл.txt. Я использую две темы; Первый поток предназначен для чтения данных из файла.txt, а второй - для записи их в выходной файл. Я новичок в программировании с mutex и con…
24 янв '18 в 20:45
0 ответов

Сколько мьютексов должно быть использовано в одном потоке

Я работаю над проектом C++ (11) и в основном потоке, мне нужно проверить значение двух переменных. Значение двух переменных будет установлено другими потоками с помощью двух разных обратных вызовов. Я использую две условные переменные для уведомлени…
1 ответ

Проблема пробуждения нескольких потоков с помощью условной переменной API в win32

У меня есть проблема в понимании, как работают переменные условия winapi. С другой стороны, я хочу пару потоков, ожидающих каких-то условий. Затем я хочу использовать вызов WakeAllConditionVariable(), чтобы разбудить все потоки, чтобы они могли рабо…
29 окт '10 в 17:17
1 ответ

Несколько потоков, но только один разрешено использовать метод

Таким образом, в основном я нахожусь в ситуации, когда у меня есть куча потоков, каждый из которых выполняет разные вычисления в течение недели. В конце недели каждый поток вызывает функцию X(), а затем начинает вычисления для следующей недели и пов…
4 ответа

Как гарантировать точный интервал ожидания потока?

Обычно, если я хочу смоделировать какую-то работу или ждать точного интервала времени, я использую condition_variable::wait_for или на худой конец thread::this_thread::sleep_for, Но condition_variable документация утверждает, что wait_for или же wai…
08 авг '17 в 14:33
1 ответ

Уведомление переменной условия пропущено

На данный момент я пишу какой-то шаблон Fork/Join с использованием std::threads. Поэтому я написал класс-оболочку для std:: thread, который использует счетчик ссылок для всех детей. Всякий раз, когда дочерний процесс завершает свое выполнение, счетч…
19 июн '15 в 14:31
0 ответов

MinGW Win32 - переменные условия не поддерживаются

Я использую Windows 7 со средой MSYS64 MinGW. В данный момент пытаюсь получить Win32 родной ConditionVariables работать с приложением C++, но безуспешно: связанные функции, по-видимому, не объявлены в windows.hи даже LD не может разрешить их из kern…
11 апр '17 в 19:10
1 ответ

Ошибка инициализации переменной условия и / или мьютекса - в настройке IPC

У меня есть следующий код, который инициализирует разделяемую память, содержащую 1 мьютекс и 1 переменную условия, затем разветвляет процесс, где родительский элемент передает дочернему элементу несколько символов через канал и сигнализирует дочерне…
27 июл '13 в 15:56
0 ответов

Блокировка Java / Условная переменная - signal() не пробуждает поток

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

Почему boost::timed_wait блокируется навсегда, когда вызывается с абсолютным временем?

Я пытаюсь понять, как использовать timed_wait, Я нашел только несколько примеров ( здесь и здесь), и у меня есть проблема при вызове с абсолютным временем. Следующий код является упрощенным примером, в действительности все это происходит внутри клас…
07 июн '17 в 08:17
3 ответа

std::condition_variable ложная блокировка

Как вы знаете, условные переменные должны вызываться в цикле, чтобы избежать ложных пробуждений. Как это: while (not condition) condvar.wait(); Если другой поток хочет разбудить ожидающий поток, он должен установить флаг условия в значение true. Нап…
25 фев '13 в 17:11
1 ответ

VC++ 11 - std::condition_variable_any не совместим со стандартом?

Недавно я столкнулся со странными проблемами компиляции в Microsoft Visual Studio 2012 (оснащенной Visual C++ 11). Я перенес большую базу кода, разработанную в основном на Linux, с учетом широкого использования C++ 11. Несмотря на несколько небольши…
1 ответ

Рабочая блокировка NSCondition

В последнее время я использую NSCondition, и я действительно не понимаю часть блокировок и разблокировок. Например, NSCondition lock = [NSCondition new]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //Do stuff [lo…
04 мар '15 в 09:29
6 ответов

Почему Python threading.Condition() notify() требует блокировки?

Мой вопрос относится именно к тому, почему он был разработан таким образом из-за ненужного влияния на производительность. Когда поток T1 имеет этот код: cv.acquire() cv.wait() cv.release() и поток T2 имеет этот код: cv.acquire() cv.notify() # requir…
0 ответов

Условная переменная notify_one notify_all

Я пытаюсь изучить условные переменные, и я застрял в следующем примере. я думал так notify_one На потребителях следует разблокировать только одного ожидающего потребителя. Но после повторного запуска мне кажется, что это не так. Я изменился notify_o…
1 ответ

Почему переменная condition_variable не является MoveAssignable

Почему condition_variable не MoveConstructible (согласно http://en.cppreference.com/w/cpp/thread/condition_variable)? Это запрещает включение в много контейнеров (например, std::unordered_map) которые двигают вещи вокруг. Это заставляет людей исполь…
06 июл '16 в 19:49