Каково различие между передачей сообщений и моделями параллелизма общей памяти?

Я нашел способ сфокусировать всех предыдущих братьев и сестер (напротив ~), которые могут работать в зависимости от того, что вам нужно.

Допустим, у вас есть список ссылок и при падении на одном, все предыдущие должны стать красными. Вы можете сделать это следующим образом:

/* default link color is blue */
.parent a {
  color: blue;
}

/* prev siblings should be red */
.parent:hover a {
  color: red;
}
.parent a:hover,
.parent a:hover ~ a {
  color: blue;
}
<div class="parent">
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
</div>

44
задан blank 5 December 2009 в 20:04
поделиться

3 ответа

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

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

По аналогии, допустим, мы вместе работаем с командой над проектом. В одной модели мы все собрались за столом, на котором выложены все наши документы и данные. Мы можем общаться, только меняя вещи на столе. Мы должны быть осторожны, чтобы все не пытались оперировать одним и тем же фрагментом данных одновременно, иначе это запутается и все запутается.

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

Хорошо, глупо. аналогия!

99
ответ дан 26 November 2019 в 21:41
поделиться

Общая память S/m требует к процессу связи для совместного использования некоторой переменной. Процессы как ожидалось для обмена информацией с помощью этих совместно используемых переменных. В схеме общей памяти ответственность за обеспечение коммуникации лежит на прикладных программистах. Операционная система только должна обеспечить общую память.

0
ответ дан 26 November 2019 в 21:41
поделиться

Модели передачи сообщений (например, Erlang) не имеют общего состояния; вся синхронизация и общение осуществляется путем обмена сообщениями. Модели совместно используемой памяти взаимодействуют посредством чтения / записи в блоки совместно используемой памяти, которые защищены семафорами или подобным образом.

10
ответ дан 26 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: