У меня есть сценарий, когда к общей области памяти обращаются исключительно два разных процесса. Когда я запускаю процессы, первый процесс успешно блокирует мьютекс, обновляет память и разблокирует мьютекс. Но я замечаю, что когда второй процесс пытается его заблокировать, он все еще находится в тупиковом состоянии, ожидая разблокировки мьютекса.
Разница во времени между блокировкой мьютекса составляет 10 секунд для первого и второго процесса.
Я использую std :: mutex. Пожалуйста, скажите мне, что мне не хватает.
Экземпляр std :: mutex распространяется только на один процесс; он не способен к межпроцессной синхронизации / параллелизму. Он способен синхронизировать только дочерние потоки внутри родительского процесса.
Попробуйте использовать Boost или библиотеку синхронизации между процессами.
std :: mutex не поддерживает межпроцессную работу, но в библиотеке pthread есть межпроцессный мьютекс, который вы можете использовать. пример Вот.