Изменения

Перейти к: навигация, поиск

Логические часы Лампорта

1056 байт добавлено, 19:30, 4 сентября 2022
м
rollbackEdits.php mass rollback
'''Логическими часами Лампорта''' называется целочисленная функция из множества событий (прием/посылка сообщений). [[Категория: Параллельное программирование]]
* Каждый поток имеет целочисленную переменную, проинициализированную 0.{{Определение|id = logical_clock* Перед посылкой, поток инкрементит ее. |definition = * При посылке сообщения к сообщению отправляющий поток добавляет значение своей переменной'''Логические часы''' — это функция $C(e) \colon E \to \mathbb R$ (из событий в числа) такая, а при приеме сообщения поток присваивает своей переменной максимум из полученного значения что для любых двух событий $e$ и значения собственной переменной и инкрементит ее$f$: если $e \to f$ ($e$ [[Частичный порядок|произошло-до]] $f$), то $C(e) < C(f)$. }}
Значением вышеупомянутой целочисленной функции на событии является значение переменной, принадлежащей тому же потокуСледствие ''только в одну сторону''. В обратную сторону часы сделать нельзя, потому что и событие. Стоит заметитьна числах у нас полный порядок, что логическое время события не уникально (уникально только в рамках своего потока)а happens-before задаёт лишь частичный.
'''Логическими часами Лампорта''' называется конкретная реализация такой функции $C$ из множества событий распределенных систем (внутреннее событие, событие отправки сообщения и событие приема сообщения) в множество неотрицательных целых чисел. У каждого процесса заводится счётчик (исходное значение неважно и может даже отличаться в разных потоках).Правила: * счётчик увеличивается перед каждым внутренним событием процесса;* при отправке сообщения значение счётчика увеличивается и прикрепляется к сообщению;* при получении сообщения значение счётчика процесса-получателя выставляется в максимум текущего и полученного значения и увеличивается на 1. Значением вышеупомянутой целочисленной функции на событии является значение счётчика, принадлежащей тому же потоку, что и событие. Стоит заметить, что логическое время не уникально в пределах всей системы, а уникально только в рамках своего потока. Оказывается, что если в распределенной системе ввести [[Параллельное программирование: Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:<br>:Если ''a'' предшествует ''b'', то логическое время часов Лампорта события ''a'' меньше логического времени события ''b''. (обратное, вообще говоря, не верно).
1632
правки

Навигация