Описание тега recursive-mutex

A recursive mutex (reentrant mutex) is a mutex which may be locked multiple times by the same process or thread, without causing a deadlock.
1 ответ

C - атрибуты мьютекса

Могу ли я создать и использовать только один атрибут мьютекса для инициализации нескольких рекурсивных мьютексов? Или мне нужно создать один атрибут мьютекса для каждого мьютекса, который я хочу создать? В принципе я следующий код правильный? int er…
06 ноя '16 в 04:15
2 ответа

Идея позади рекурсивного замка мьютекса

Я работаю в школьной лаборатории, и нам поручено создать рекурсивную блокировку мьютекса для программы подсчета. Я написал некоторый код (который не работает), но я думаю, что это в основном потому, что я не понимаю реальной идеи использования рекур…
25 мар '14 в 16:26
1 ответ

Как избежать recursive_mutex

У меня есть случай recursive_mutex, который я пытаюсь решить. Вот фрагмент кода, который объясняет проблему. void OnConnectionDisconnected() { boost::lock_guard<boost::mutex> lock ( m_mutexConnectionSet ); IPCSyncConnectionSharedPtrSet::iterat…
0 ответов

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

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

Как работает рекурсивный (реентрантный) мьютекс?

Я прочитал две статьи на http://preshing.com/20120305/implementing-a-recursive-mutex а также http://en.wikipedia.org/wiki/Reentrant_mutex о рекурсивном (реентерабельном) мьютексе, но ни одна статья не дала никаких результатов. смысл. Может ли кто-ни…
1 ответ

Рекурсивный мьютекс с реализацией FSU Pthread

Я задаюсь вопросом, способна ли в любом случае реализация стандарта pthread в Университете штата Флорида обрабатывать рекурсивные мьютексы. К сожалению, документация о реализации FSU довольно скудна, и в ней не упоминается возможность или не объявля…
18 ноя '10 в 10:59
1 ответ

Обратные вызовы и `std::recursive_mutex` - допустимый вариант использования?

У меня есть следующий полиморфный интерфейс: struct service { virtual void connect(std::function<void>(bool) cb); // Invoke 'cb' with 'true' on connection success, 'false' otherwise. virtual ~service() { } }; Некоторые реализации service синхр…
01 фев '19 в 12:53
2 ответа

Ошибка аргумента Boost condition_variable

Я столкнулся с ошибкой в ​​коде ниже. recursive_mutex m_RecurMutex; condition_variable cond; unique_lock<recursive_mutex> lock(m_RecurMutex); cond.wait(lock); // Error Here. В чем причина этой ошибки?
09 окт '10 в 09:47
1 ответ

Может ли поток вызвать.WaitOne() Mutex более одного раза, прежде чем вызывать.ReleaseMutex() и наоборот?

В моем коде было бы удобно, если бы мой поток вызывал.WaitOne() более одного раза перед вызовом.ReleaseMutex(). И наоборот: вызов.ReleaseMutex () несколько раз перед перезапуском цикла, который начинается с вызова.WaitOne(). Некоторые комбинации опе…
15 май '18 в 22:19
1 ответ

Как реализовать рекурсивную блокировку с использованием boost, охватывающего несколько методов?

У меня есть класс, который открывает транзакции, добавляет операции в очередь, а затем закрывает транзакцию. В течение времени жизни open->close я хотел бы использовать рекурсивный мьютекс, чтобы только один поток мог иметь открытую транзакцию в люб…
30 апр '13 в 18:35
1 ответ

Поддерживает ли pthreads метод запроса "счетчика блокировок" рекурсивного мьютекса?

Поддерживает ли pthread какой-либо метод, который позволяет запрашивать количество блокировок рекурсивного мьютекса?
11 ноя '09 в 21:12
3 ответа

std::mutex против std::recursive_mutex как член класса

Я видел, как некоторые люди ненавидят recursive_mutex: http://www.zaval.org/resources/library/butenhof1.html Но когда я думаю о том, как реализовать класс, который является потокобезопасным (защищенным мьютексом), мне крайне трудно доказать, что каж…
24 янв '13 в 10:19
3 ответа

Не рекурсивное владение мьютексом

Я прочитал этот ответ на SO: Поскольку рекурсивный мьютекс имеет чувство собственности, поток, который захватывает мьютекс, должен быть тем же потоком, который освобождает мьютекс. В случае нерекурсивных мьютексов нет смысла владения, и любой поток …
24 фев '10 в 03:28
0 ответов

Мой рекурсивный мьютекс против pthread_mutex_t (тип: рекурсивный) (repost, push)

Мне было интересно, если бы я мог сделать рекурсивный тип мьютекса самостоятельно с PTHREAD_MUTEX_ERRORCHECK мьютекс, это результат: typedef struct { pthread_mutex_t mutex; uint32_t deadlocks; } pthread_recursivemutex_t; int pthread_recursivemutex_i…
21 июл '14 в 00:04
3 ответа

Почему boost::recursive_mutex не работает должным образом?

У меня есть собственный класс, который использует бьют-мьютексы и блокировки вроде этого (только соответствующие части): template<class T> class FFTBuf { public: FFTBuf(); [...] void lock(); void unlock(); private: T *_dst; int _siglen; int _p…
02 апр '10 в 13:36
0 ответов

pthread_recursive_mutex_initializer_np vs pthread_mutex_initializer

Кроме ответа, приведенного в разделе В чем разница между PTHREAD_RECURSIVE_MUTEX_INITIALIZER и PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP? Я хотел бы знать, каковы другие различия между этими двумя.
07 сен '18 в 09:13
4 ответа

Рекурсивные и нерекурсивные блокировки (мьютекс)

У меня проблемы с блокировкой в ​​моей программе. Итак, я читал о блокировках, но проблема в том, что большая часть информации противоречива или не определяется платформой. В рекурсивной блокировке (Mutex) против нерекурсивной блокировки (Mutex) наи…
30 окт '14 в 14:30
1 ответ

Доступ к счетчику владельцев, используемому std::recursive_mutex

У меня есть случай, когда решения моего алгоритма основаны на глубине общего std::recursive_mutex, #include <iostream> #include <mutex> #include <thread> int g_i = 0; std::recursive_mutex g_i_mutex; void bar() { std::lock_guard<…
26 сен '17 в 11:21
3 ответа

Как использовать рекурсивный QMutex

Я пытаюсь использовать рекурсивный QMutex, я читаю Справочник по классам QMutex, но я не понимаю, как это сделать, может кто-нибудь дать мне пример? Мне нужен какой-то способ блокировки QMutex, который можно разблокировать после или до вызова метода…
30 ноя '12 в 01:47
6 ответов

Рекурсивная блокировка (мьютекс) против нерекурсивной блокировки (мьютекс)

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