2016-11-25 2 views
0

Являются ли понятия синхронизации и состояния гонки только для модели с общей памятью?Являются ли синхронизация и состояние гонки только для модели с общей памятью?

В моделях с распределенной памятью, когда процессы обмениваются данными, отличными от общей памяти, выполняются ли синхронизация и состояние гонки?

Спасибо.

ответ

1

Условия гонки все еще происходят в распределенных системах.

Согласно Wikipedia, «Преимущество распределенной памяти в том, что она исключает условия гонки [...]». Я делаю не согласен с этим утверждением в его нынешнем виде. Вот мои аргументы:

Если вы не общаетесь между процессами, это тривиальная проблема в обеих моделях; просто не трогайте ресурсы друг друга.

Если у вас нет асинхронной сети, ваша производительность сильно пострадает, поэтому почти все процессоры используют асинхронные сети как внутри, так и снаружи.

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

Рассмотрим отправляющий «пусть х = 4» до B.
Одновременно, С посылает «пусть х = 5» к В.

ли х равен 4 или 5 после того, как оба сообщения обрабатываются?

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