Случилось-раньше - Happened-before
В Информатика, то случилось раньше связь (обозначается: ) - это отношение между результатом двух событий, так что если одно событие должно произойти до другого, результат должен отражать это, даже если эти события в действительности выполняются не по порядку (обычно для оптимизации потока программы). Это включает заказ события, основанные на потенциале причинно-следственная связь пар событий в параллельной системе, особенно асинхронный распределенные системы. Его сформулировал Лесли Лэмпорт.[1] В частности, в Java случается раньше Отношение является гарантией того, что память, в которую записывается оператор A, видна оператору B, то есть этот оператор A завершает свою запись до того, как оператор B начинает чтение.[1]
Отношение "произошло до" формально определяется как наименьшее строгий частичный порядок о таких событиях, что:
- Если события и происходят в одном процессе, если наступление события предшествовало наступлению события .
- Если событие отправка сообщения и события получение сообщения, отправленного в случае , .
Если существуют другие причинно-следственные связи между событиями в данной системе, например, между созданием процесса и его первым событием, эти отношения также добавляются в определение.
Как и все строгие частичные заказы, отношение "произошло до" переходный, иррефлексивный и антисимметричный, то есть:
- , если и , тогда (транзитивность). Это означает, что для любых трех событий , если случилось раньше , и случилось раньше , тогда должно было случиться раньше .
- (нерефлексивность). Это означает, что перед собой не может произойти никакое событие.
- куда , если тогда (антисимметрия). Это означает, что для любых двух различных событий , если случилось раньше тогда не могло случиться раньше .
Процессы, составляющие распределенную систему, не знают об отношении «произошло до этого», если только они не используют логические часы, как Часы Лампорта или вектор часы. Это позволяет разрабатывать алгоритмы для взаимное исключение, а также такие задачи, как отладка или оптимизация распределенных систем.
Смотрите также
Рекомендации
- ^ Лэмпорт, Лесли (1978). «Время, часы и порядок событий в распределенной системе», Коммуникации ACM, 21(7), 558-565.