std :: mutex в разделяемой памяти не работает

У меня есть сценарий, когда к общей области памяти обращаются исключительно два разных процесса. Когда я запускаю процессы, первый процесс успешно блокирует мьютекс, обновляет память и разблокирует мьютекс. Но я замечаю, что когда второй процесс пытается его заблокировать, он все еще находится в тупиковом состоянии, ожидая разблокировки мьютекса.

Разница во времени между блокировкой мьютекса составляет 10 секунд для первого и второго процесса.

Я использую std :: mutex. Пожалуйста, скажите мне, что мне не хватает.

1

Решение

Экземпляр std :: mutex распространяется только на один процесс; он не способен к межпроцессной синхронизации / параллелизму. Он способен синхронизировать только дочерние потоки внутри родительского процесса.

Попробуйте использовать Boost или библиотеку синхронизации между процессами.

4

Другие решения

std :: mutex не поддерживает межпроцессную работу, но в библиотеке pthread есть межпроцессный мьютекс, который вы можете использовать. пример Вот.

1

По вопросам рекламы [email protected]