2010-08-28 8 views
0

Я хочу попытаться лучше понять проблему синхронизации разделяемой памяти. Я понял, что межпроцессная синхронизация может работать по-разному в разных операционных системах. Самое различие - это то, что происходит, когда процесс, который заблокировал сбой общей памяти. Windows без блокировки с именем mutex после сбоя процесса, в то время как Linux не освобождает его. Может ли кто-нибудь объяснить мне лучшую проблему и какие преимущества и недостатки? Как возможно под linux освободить именованный мьютекс или межпроцессный семафор после сбоя процесса? Я искал в Интернете, но я не нашел кого-то, кто хорошо объяснил проблемы и решения.Блокировка разделяемой памяти и сбоя процесса

Я надеюсь, что кто-то может мне помочь. Извините за мой английский.

ответ

1

Преимущество Windows заключается в том, что ожидающий поток освобождается для продолжения. Недостатком является то, что он не имеет представления о том, что состояние общей памяти — может быть частью процесса обновления. (Windows указует на это ожидание на мьютексе возвращающегося WAIT_ABANDONED, а не WAIT_OBJECT_0 (или смещение от них, если ожиданий на нескольких объектах).

На практике единственное безопасное, что нужно сделать, это восстановить общую память в некотором роде (при условии, это может быть сделано значимо) или сбой.

Смежные вопросы