Мьютекс ("взаимное исключение") - это механизм, обеспечивающий целостность, когда к одним и тем же данным или ресурсу обращаются (в частности, изменяются) одновременно из нескольких потоков.
2 ответа

Общее состояние гонки

Я новичок в C и хотел знать об условиях гонки. Я нашел это в Интернете, и он попросил найти условие гонки и решение для этого. Мой анализ состоит в том, что условие гонки в методе create-thread() имеет условие гонки, особенно в if-else заявление. Та…
07 мар '15 в 21:06
1 ответ

Реализация мьютексов для записи файлов

Я пытаюсь использовать взаимные исключения, чтобы избежать нескольких записей в один и тот же поток в C/Cpp. Ниже приведен поток моей программы. Я не понимаю, где включить код блокировки и разблокировки. main() { spawn a worker thread } worker_threa…
07 мар '18 в 15:23
1 ответ

Нужен ли мне Mutex при использовании кругового буфера и шаблона проектирования "производитель / потребитель"

У меня есть два потока, которые общаются через кольцевой буфер. /* Initialize not_full semaphore to a count of BUFFER_SIZE */ sem_init(&not_full_semaphore, 0, BUFFER_SIZE); /* Initialize not_empty semaphore to a count of 0 */ sem_init(&not_e…
26 сен '18 в 16:39
1 ответ

Простая многопоточная программа segfault

Ниже приведена попытка написать простую многопоточную программу, где каждый поток будет читать одну строку из файла журнала (и ничего не делает). Где-то есть ошибка и ошибки программы (файл ядра не генерируется). Если fgets() заменяется fscanf() в r…
28 дек '13 в 12:28
0 ответов

Вызов pthread_cond_timedwait не работает с механизмом блокировки мьютекса

У меня есть приложение для входа. В котором по истечении определенного времени (настраиваемое пользователем время) мне нужно закрыть текущий файл журнала, создать новый файл журнала и записать данные. В моей программе есть 2 критических раздела кода…
29 июл '16 в 12:40
1 ответ

Использование одного pthread_mutex_t и умножения pthread_cond_t с помощью pthread_cond_wait()

Согласно Открытой группе базовых спецификаций, выпуск 7, IEEE Std 1003.1-2008, одна переменная условия (pthread_cond_tне должен использоваться вместе с разными мьютексами (pthread_mutex_t) в pthread_cond_wait() хотя по крайней мере один поток ожидае…
02 дек '11 в 17:04
1 ответ

Ошибка компиляции: переопределение имени объединения

У меня есть этот кусок кода здесь, и я получаю ошибку GCC: переопределение union semun в самом начале этого кода union semun { int val; /* Value for SETVAL */ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ unsigned short *array; /* Array f…
16 май '14 в 13:09
2 ответа

Как я должен инициализировать мьютексы pthread?

#include <pthread.h> pthread_mutex_t* mut; int main() { mut = PTHREAD_MUTEX_INITIALIZER; } Вышеприведенный код выплевывает error: expected expression before ‘{’ token, #include <pthread.h> pthread_mutex_t* mut = PTHREAD_MUTEX_INITIALIZER…
04 июн '17 в 06:20
1 ответ

pthread_mutex_lock не является экземпляром...?

Люди. Я пытался использовать мьютекс в качестве подстановки для атомарных переменных, но результаты показывают, что мьютекс не является экземпляром, потому что у "num" все еще есть половинное изменение, что делает условие if истинным. Это supose для…
29 июл '17 в 19:13
1 ответ

CUDA, mutex и atomicCAS()

Недавно я начал разрабатывать CUDA и столкнулся с проблемой atomicCAS(). Чтобы сделать некоторые манипуляции с памятью в коде устройства, мне нужно создать мьютекс, чтобы только один поток мог работать с памятью в критической части кода. Код устройс…
24 янв '14 в 20:03
2 ответа

Многопоточность и общий ресурс: периодически копируйте данные из буфера (структура данных) в файл, используя C++

Мой код имеет структуру данных, скажем, например, "вектор vecor строк". У меня есть 2 потока: THread 1 записывает данные в эту структуру данных (буфер в RAM). Параллельно работающий поток 2, который должен копировать данные из вышеприведенного буфер…
03 июл '17 в 14:53
0 ответов

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

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

C++ ScopeTryLock Macro

Привет, у меня есть мьютекс, и я хотел бы сделать TryScopeLock, который будет использоваться как if (ScopeTryLock(mutex)) { ... } Идея состоит в том, что, если мьютекс может быть заблокирован, он вводится и в операторе if. В противном случае его про…
10 ноя '18 в 00:59
1 ответ

Каков наилучший способ синхронизации тестов в разных пакетах, которые связаны с глобальной переменной?

Я работаю над проектом go, моя задача - написать несколько тестов для пакета. Тесты должны получить доступ к глобальной переменной в другом пакете. Эта глобальная переменная может быть setup/access в тестировании разных пакетов. Потому что по умолча…
2 ответа

В Go, какие типы данных безопасны для чтения и записи после извлечения их из одновременно доступной структуры?

Вероятно, не ясно из самого вопроса, что я здесь, поэтому позвольте мне уточнить. В качестве упражнения по параллелизму я пытаюсь написать кеш, который должен быть доступен для нескольких одновременных запросов. Содержимое кэша имеет тип interface{}…
31 окт '14 в 19:11
3 ответа

Защита без блокировки для синхронизированного захвата / выпуска

У меня есть общий ресурс tempfile, который разделен на куски по 4K (или какое-то подобное значение). Каждый 4K в файле представлен индексом, начинающимся с нуля. Для этого общего ресурса я отслеживаю используемые индексы блоков 4K и всегда возвращаю…
1 ответ

Nocopy минимальный пример?

Я пытался получить noCopy директива работать на одну из моих собственных структур, но я не могу получить go vet обнаружить это. Я могу получить это, чтобы обнаружить копирование sync.WaitGroup, а также sync.Mutex, но не моя собственная структура. Эт…
25 сен '18 в 09:08
1 ответ

System::Threading::Mutex, вызывается из несинхронизированного блока кода. Неожиданный тупик

В попытке избавить мой графический интерфейс от условий гонки и взаимных блокировок у меня есть следующая функция, которую я вызываю из c'tor, и всякий раз, когда мне нужен сервис, который разделяет мои именованные mutex предоставить свой вклад: voi…
20 окт '11 в 23:04
1 ответ

Действительно ли установка переменной, равной самой себе, выполняется в C++?

Я работаю над созданием забытых графовых алгоритмов, которые в основном скрывают схему доступа к памяти алгоритма. Предполагается, что память зашифрована, но злоумышленник может контролировать ее. Предполагается, что процессор находится в облаке, за…
16 июн '16 в 16:20
1 ответ

Почему cpp говорит мне 'неопределенная ссылка на mtx_init'? Я уже включаю заголовки

У меня возникли проблемы при написании AC-программы на FreeBSD 9.2 Я хочу использовать блокировку мьютекса, чтобы помочь мне контролировать значение определенной переменной, и я прочитал эту ссылку: http://www.freebsd.org/cgi/man.cgi?query=mutex&sek…
09 май '14 в 13:37