Логические часы Лампорта — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 3: Строка 3:
  
 
* Каждый поток имеет целочисленную переменную, проинициализированную 0.
 
* Каждый поток имеет целочисленную переменную, проинициализированную 0.
* Перед посылкой, поток инкрементит ее.  
+
* Перед посылкой, поток увеличивает ее на единицу.  
* При посылке сообщения к сообщению отправляющий поток добавляет значение своей переменной, а при приеме сообщения поток присваивает своей переменной максимум из полученного значения и значения собственной переменной и инкрементит ее.  
+
* При посылке сообщения к нему отправляющий поток добавляет значение своей переменной, а при приеме сообщения поток присваивает своей переменной максимум из полученного значения и значения собственной переменной и увеличивает ее на единицу.  
  
 
Значением вышеупомянутой целочисленной функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что логическое время события не уникально (уникально только в рамках своего потока).
 
Значением вышеупомянутой целочисленной функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что логическое время события не уникально (уникально только в рамках своего потока).
  
Оказывается, что если в распределенной системе ввести [[Параллельное программирование: Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:<br>
+
Оказывается, что если в распределенной системе ввести [[Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:
Если ''a'' предшествует ''b'', то логическое время часов Лампорта события ''a'' меньше логического времени события ''b''. (обратное, вообще говоря, не верно)
+
:Если ''a'' предшествует ''b'', то логическое время часов Лампорта события ''a'' меньше логического времени события ''b'' (обратное, вообще говоря, не верно).

Версия 17:28, 26 июня 2010

Логическими часами Лампорта называется целочисленная функция из множества событий (прием/посылка сообщений).

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

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

Оказывается, что если в распределенной системе ввести частичный порядок предшествования на событиях, то имеет место следующее утверждение:

Если a предшествует b, то логическое время часов Лампорта события a меньше логического времени события b (обратное, вообще говоря, не верно).