Описание тега stdmutex
0
ответов
Сколько мьютексов должно быть использовано в одном потоке
Я работаю над проектом C++ (11) и в основном потоке, мне нужно проверить значение двух переменных. Значение двух переменных будет установлено другими потоками с помощью двух разных обратных вызовов. Я использую две условные переменные для уведомлени…
24 окт '17 в 20:58
1
ответ
Выполняется ли операция копирования при возврате до или после деструктора lock_guard?
Это get_a() функция безопасна для условий гонки или мне нужно явно скопировать str_ как в get_b() для того, чтобы иметь потокобезопасную функцию? class Class { public: auto get_a() -> std::string { auto&& guard = std::lock_guard{mutex_}; …
04 дек '18 в 13:04
4
ответа
Правильно ли использовать механизм ожидания - уведомления с использованием std::mutex?
Я начал использовать std::mutexes, чтобы остановить поток и ждать, пока другой поток не возобновит его. Это работает так: Тема 1 // Ensures the mutex will be locked while(myWaitMutex.try_lock()); // Locks it again to pause this thread myWaitMutex.lo…
28 апр '17 в 08:51
2
ответа
Почему std::mutex занимает очень много времени?
Этот код демонстрирует, что мьютекс распределяется между двумя потоками, но один поток имеет его почти все время. #include <thread> #include <mutex> #include <iostream> #include <unistd.h> int main () { std::mutex m; std::thr…
30 окт '18 в 16:10
2
ответа
Почему избыточный дополнительный блок области видимости влияет на поведение std::lock_guard?
Этот код демонстрирует, что мьютекс распределяется между двумя потоками, но что-то странное происходит с блоком обзора вокруг thread_mutex, (У меня есть вариант этого кода в другом вопросе, но это кажется второй загадкой.) #include <thread> #i…
30 окт '18 в 16:26
2
ответа
Правильность использования std::atomic<bool> в сочетании с std::mutex
Я написал класс очереди с общим приоритетом.Для подачи сигнала о прекращении подачи данных я использую метод Cancel(), который устанавливает знак done в false, и приложение не может записывать / читать любые данные из очереди. Я не уверен в использо…
07 июн '17 в 08:09
1
ответ
Почему функции, использующие std::mutex, выполняют нулевую проверку адреса pthread_key_create?
Возьмем эту простую функцию, которая увеличивает целое число под блокировкой, реализованной std::mutex: #include <mutex> std::mutex m; void inc(int& i) { std::unique_lock<std::mutex> lock(m); i++; } Я ожидал бы, что это (после встраи…
22 сен '17 в 16:54
2
ответа
std::mutex в разделяемой памяти не работает
У меня есть сценарий, когда к общей области памяти обращаются исключительно два разных процесса. Когда я запускаю процессы, первый процесс успешно блокирует мьютекс, обновляет память и разблокирует мьютекс. Но я замечаю, что когда второй процесс пыт…
10 окт '17 в 09:15
0
ответов
Почему poco использует pthread_mutex_t для rwlock вместо std::mutex
Я не опытный программист C++, и я читаю исходный код Poco для целей обучения. Я обнаружил, что pthread_mutex_t используется для RWLock на платформах VX и Posix, а std:: mutex используется для семафоров. Чем отличается pthread_mutex_t от std:: mutex.…
03 сен '18 в 11:47
0
ответов
Как заставить поток ждать в другом потоке, который вызывается сам
Я довольно новичок в многопоточности и библиотеках потоков C++11. У меня есть один сценарий, и я был бы признателен за ваш путь вперед. У меня есть 2 потока (скажем, "thread1" и "thread2"), так что "thread1" вызывает "thread2", и он должен ожидать к…
29 ноя '18 в 07:18
5
ответов
std::unique_lock<std:: mutex> или std:: lock_guard<std:: mutex>?
У меня есть два варианта использования. О. Я хочу синхронизировать доступ двумя потоками к очереди. Б. Я хочу синхронизировать доступ двумя потоками к очереди и использовать условную переменную, потому что один из потоков будет ожидать сохранения со…
11 дек '13 в 10:35
2
ответа
Зачем использовать std::atomic, если для правильной работы все еще требуется мьютекс
Чтение текста для std::condition_variable Я сталкивался с этим предложением: Даже если общая переменная является атомарной, ее необходимо изменить в мьютексе, чтобы правильно опубликовать изменение в ожидающем потоке. У меня вопрос такой: Какая поль…
05 дек '18 в 00:48
0
ответов
C++11 std::mutex блокирует тот же поток
Я сейчас изучаю (освежаю) C++. В рамках освежения я попытался проверить std::mutex Поведение мной ниже кода. Это в основном пытается сделать "Руководство lock / unlock ',' std::lock_guard над mutex ' а также ' try_lock над std::mutex ". Когда я ссыл…
25 июл '18 в 05:21
0
ответов
Почему производительность CRITICAL_SECTION стала хуже на Win8
Похоже, что производительность CRITICAL_SECTION стала хуже в Windows 8 и выше. (см. графики ниже) Тест довольно прост: некоторые параллельные потоки делают по 3 миллиона блокировок каждый для доступа исключительно к переменной. Вы можете найти прогр…
04 сен '18 в 16:38
1
ответ
Другое поведение, когда у объекта `std:: lock_guard<std:: mutex>` нет имени
Я учусь о std::mutex, std::thread и я удивлен разным поведением двух частей кода ниже: #include <iostream> #include <mutex> #include <thread> using namespace std; std::mutex mtx; void foo(int k) { std::lock_guard<std::mutex> …
22 авг '18 в 08:53
1
ответ
Безопасность потоков C++ и экономия времени: почему поток с проверкой мьютекса иногда работает быстрее, чем без него?
Я новичок в использовании потоков в C++. Я прочитал основы о std::thread и mutex, и, похоже, я понимаю цель использования мьютексов. Я решил проверить, действительно ли потоки так опасны без мьютексов (ну, я верю книгам, но предпочитаю видеть это св…
11 окт '17 в 20:32
3
ответа
Почему конструктор std::mutex в C++ не бросает?
pthread_mutex_init() функция возвращает ненулевое значение, когда не удается инициализировать мьютекс, в то время как std::mutex класс в C++11 имеет конструктор noexcept, Скажем, кто-то решил реализовать класс мьютекса C++ поверх мьютекса pthreads. …
09 фев '18 в 02:51
2
ответа
Есть ли какая-либо причина, по которой C++ 11+ std::mutex следует объявлять как глобальную переменную, а не передавать в std::thread в качестве параметра функции?
Я видел большинство примеров использования std::mutex где мьютекс является глобальным. Мне было интересно, есть ли конкретная причина, почему это сделано? У меня были свои программы, где я этого не делаю, и просто передаю мьютекс как std::thread std…
05 июл '17 в 17:37
3
ответа
Нужно ли блокировать?
Я встретил вопрос в Leetcode. Я рассмотрел некоторые решения в обсуждении. Но мое решение отличается от других, потому что я не использую lock в методе first, Интересно, правильный ли мой код? Кроме того, можете ли вы дать мне несколько советов о мо…
27 авг '19 в 14:48
2
ответа
Как std::atomic_ref реализован для неатомарных типов?
Мне интересно, как можно std::atomic_ref быть реализованным эффективно (один std::mutex на объект) для неатомарных объектов, поскольку следующее свойство кажется довольно сложным для соблюдения: Атомарные операции, применяемые к объекту через atomic…
11 окт '19 в 20:54