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

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

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

Спасибо.


person Tim    schedule 25.11.2016    source источник


Ответы (1)


Условия гонки по-прежнему случаются в распределенных системах.

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

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

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

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

Предположим, что A отправляет «let x = 4» в B.
Одновременно с этим C отправляет «let x = 5» в B.

Равно ли x 4 или 5 после обработки обоих сообщений?

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

person Filip Haglund    schedule 25.11.2016