Логические часы Лампорта — различия между версиями
м (переименовал «Параллельное программирование: Логические часы Лампорта» в «Логические часы Лампорта») |
Ulyantsev (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
* Каждый поток имеет целочисленную переменную, проинициализированную 0. | * Каждый поток имеет целочисленную переменную, проинициализированную 0. | ||
− | * Перед посылкой, поток | + | * Перед посылкой, поток увеличивает ее на единицу. |
− | * При посылке сообщения к | + | * При посылке сообщения к нему отправляющий поток добавляет значение своей переменной, а при приеме сообщения поток присваивает своей переменной максимум из полученного значения и значения собственной переменной и увеличивает ее на единицу. |
Значением вышеупомянутой целочисленной функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что логическое время события не уникально (уникально только в рамках своего потока). | Значением вышеупомянутой целочисленной функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что логическое время события не уникально (уникально только в рамках своего потока). | ||
− | Оказывается, что если в распределенной системе ввести [[ | + | Оказывается, что если в распределенной системе ввести [[Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение: |
− | Если ''a'' предшествует ''b'', то логическое время часов Лампорта события ''a'' меньше логического времени события ''b'' | + | :Если ''a'' предшествует ''b'', то логическое время часов Лампорта события ''a'' меньше логического времени события ''b'' (обратное, вообще говоря, не верно). |
Версия 17:28, 26 июня 2010
Логическими часами Лампорта называется целочисленная функция из множества событий (прием/посылка сообщений).
- Каждый поток имеет целочисленную переменную, проинициализированную 0.
- Перед посылкой, поток увеличивает ее на единицу.
- При посылке сообщения к нему отправляющий поток добавляет значение своей переменной, а при приеме сообщения поток присваивает своей переменной максимум из полученного значения и значения собственной переменной и увеличивает ее на единицу.
Значением вышеупомянутой целочисленной функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что логическое время события не уникально (уникально только в рамках своего потока).
Оказывается, что если в распределенной системе ввести частичный порядок предшествования на событиях, то имеет место следующее утверждение:
- Если a предшествует b, то логическое время часов Лампорта события a меньше логического времени события b (обратное, вообще говоря, не верно).