Описание тега unique-lock

0 ответов

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

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

Ошибка сегментации при выполнении метода-члена из потока

Я пытаюсь изучить std::threads, std::mutex и std::unique_lock. Идея состоит в том, чтобы создать 5 потоков. Запросы будут записаны в очередь, и 5 потоков получат запрос из очереди и обработают его. Если очередь пуста, потоки будут ждать, и это будет…
18 май '18 в 11:21
0 ответов

Наличие нескольких блокировок считывателя в одном потоке

У меня есть данные в сочетании с Lock = boost::shared_mutex, Я блокирую доступ к данным с помощью блокировка считывателя ReadLock = boost::shared_lock<Lock> и писатель замки WriteLock = boost::unique_lock<Lock>, Очевидно, что многие чита…
1 ответ

Сложность с unique_lock в простом Producer & Consumer

Я написал очень простой Producer/Consumer на основе заметок C++11 и не смог понять, почему unique_lock() не снимает блокировку, когда выходит из области видимости. struct Message{ Message(int x):data(x){cout<<"+";} int data; }; queue<Messag…
20 дек '17 в 14:44
2 ответа

Уведомление о потоке не работает для моего потребителя

У меня есть попытка на производителя / потребителя Режиссер #pragma once #ifndef PRODUCER_H #define PRODUCER_H #include <thread> #include "Mailbox.h" class Producer { private: std::thread producer; Mailbox& mailbox; public: Producer(Mailbo…
12 окт '17 в 23:41
2 ответа

Безопасно ли ожидать / уведомлять мьютексы unique_lock, когда те же мьютексы используются с lock_guard где-то еще?

Я использовал следующий вид ожидания / сигнала, чтобы потоки информировали друг друга. std::condition_variable condBiz; std::mutex mutexBar; .. void Foo::wait() { std::unique_lock<std::mutex> waitPoint(mutexBar); if (waitPoint.owns_lock()) { c…
18 мар '18 в 15:40
2 ответа

Два std::unique_lock, используемые на одном мьютексе, вызывают тупик?

Я нашел этот код на обмене стеками обзора кода, который реализует проблему производителя-потребителя. Я публикую раздел кода здесь. В данном коде давайте рассмотрим сценарий, когда производитель создает значение путем вызова void add(int num)приобре…
1 ответ

unique_lock ошибка компиляции скобки инициализатора

Я в замешательстве... У меня есть кусок кода таким образом; class logger { public: std::mutex mut; unique_lock< std::mutex> lk(mut); // ... snip ... } Строка "unique_lock lk (mut) " не компилируется с этой ошибкой; ** g ++ -pthread --std = C++…
15 мар '18 в 16:29
1 ответ

Правильно ли обрабатываются исключения из этого кода?

В следующем коде возможно, что событие вызывает исключение, и оно может не обрабатываться даже обработчиком (редко, но это все еще так) Я хочу, чтобы "lck2" был разблокирован во время выполнения события, потому что я не хочу блокировать основной пот…
0 ответов

Использование одного и того же мьютекса для unique_lock и scoped_lock

Уместно ли использовать и unique_lock, и scoped_lock с одним и тем же мьютексом? Чтобы разрешить использование cv.wait и необязательную разблокировку, одновременно обеспечивая безопасность с привязкой к области. Например; std::mutex mut; //thread: s…
0 ответов

Управляйте несколькими unique_locks параллельно

У меня есть произвольное количество слоев данных; каждый соответствует boost::shared_mutex потому что может быть несколько читателей (блокировка его с помощью boost::shared_lock) или писатель (запирая его boost::unique_lock). Теперь наступает момент…
20 мар '18 в 06:48
2 ответа

Передача ссылки на мьютекс от основного к классу

Мне нужно работать с тем же mutex а также unique_lock через основные функции и экземпляры классов. Однако у меня возникают проблемы с назначением mutex/unique_lock обратиться к переменной члена класса (то есть mutex&). Вот что у меня есть: Worke…
17 окт '18 в 15:41
1 ответ

Служит ли этот unique_lock в dtor какой-либо цели?

Наткнулся на этот деструктор в кодовой базе, которую я отлаживал. ManagerImpl::~ManagerImpl() { // don't go away if some thread is still hitting us boost::unique_lock<boost::mutex> l(m_mutex); } Действительно ли это служит какой-либо полезной …
17 июн '19 в 19:45
1 ответ

Почему std::lock() вызывает бесконечный цикл при работе с моим собственным объектом unique_lock?

Я пытаюсь реализовать аналог unique_lock (это просто учебная задача, я понимаю, что стандартная реализация библиотеки работает отлично). Я уже написал все методы, которые мне нужны, и сейчас я пытаюсь протестировать свой код на примере с https://en.…
22 май '19 в 23:57
0 ответов

Шаблон адаптера в C++ с использованием сочетания частного и публичного наследования

У меня есть вопрос о создании адаптера блокировки и, в более общем плане, шаблона адаптера со стилем реализации ниже. Реализация ниже основана на ответе в Правильном способе C++ реализации lock_guard для пользовательской библиотеки. Реализация полаг…
02 май '20 в 23:15
1 ответ

Может ли использование блокировки мьютекса, принятого lock_guard, привести к UB?

Может ли следующий фрагмент вызвать неповрежденное поведение из-за использования блокировки мьютекса, уже принятого lock_guard? и будет ли безопасно, если я используюunique_lock вместо того lock_guardв том же фрагменте? Я знаю что естьstd::unique_lo…
13 май '20 в 19:44
0 ответов

Кажется, что мой потокобезопасный код очереди работает, любые возможные состояния гонки, взаимоблокировки или другие проблемы проектирования?

Я новичок в использовании condition_variables и unique_locks в C++. Я работаю над созданием цикла событий, который опрашивает две пользовательские очереди событий и "логическое" (см. Целое число, действующее как логическое), на которое могут действо…
1 ответ

что означает unique_lock, когда один поток получает 2 unique_lock одного и того же мьютекса?

У меня есть следующий код, взятый из https://en.cppreference.com/w/cpp/thread/unique_lock. Однако после распечатки вывода я вижу неожиданный результат и хотел бы получить некоторые пояснения. Код такой: #include <mutex> #include <thread>…
04 окт '20 в 18:10
2 ответа

condition_variable wait_for в C++

Я работаю с condition_variable на Visual Studio 2019. condition_variable.wait_for() функция возвращает std::cv_status::no_timeout без уведомления. #include <iostream> #include <thread> #include <chrono> #include <mutex> std::…
20 ноя '20 в 15:15
2 ответа

Освобождает ли std::lock_guard мьютекс после создания с параметром std::accept_lock?

Я знаю, что мой вопрос очень похож на этот. Почему std ::lock_guard снимает блокировку после использования std ::accept_lock?, но поведение, которое я вижу, нет. Вот мой код: #include <mutex> #include <iostream> using namespace std; std:…
14 окт '21 в 07:34