4551
правка
Irina (обсуждение | вклад) мНет описания правки |
Irina (обсуждение | вклад) |
||
Строка 15: | Строка 15: | ||
Ответ совпадает с вызовом, если имена их объектов и потоков | Ответ ''совпадает'' с вызовом, если имена их объектов и потоков согласуются. ''Вызовом метода'' является пара, состоящая из вызова и следующего подходящего ответа. Вызов ''ожидает'' своего завершения в истории, если за ним не следует подходящий ответ. Если H – история, то ''complete''(H) – это подпоследовательность H, состоящая из всех совпадающих вызовов и ответов. История H является ''последовательной'', если первым событием H является вызов, а за каждым вызовом (кроме, возможно, последнего) немедленно следует подходящий ответ. | ||
Пусть H – история. Потоковая подыстория H|P | Пусть H – история. ''Потоковая подыстория'' H|P представляет собой подпоследовательность событий в H с именем потока P. ''Объектовая подыстория'' H|x аналогично определяется для объекта x. Две истории H и H' ''эквивалентны'', если для каждого потока A выполняется H|A = H'|A. История H ''хорошо согласована'', если каждая потоковая подыстория H|A из H является последовательной. Обратите внимание, что подыстории потоков хорошо согласованной истории всегда последовательны, однако подыстории объектов не обязательно должны быть последовательными. | ||
Последовательная спецификация объекта представляет собой префиксно-замкнутое множество последовательных историй объекта, которое определяет легальные истории этого объекта. Последовательная история H является легальной, если каждая подыстория объекта легальна. Метод | ''Последовательная спецификация'' объекта представляет собой префиксно-замкнутое множество последовательных историй объекта, которое определяет легальные истории этого объекта. Последовательная история H является ''легальной'', если каждая подыстория объекта легальна. Метод называется ''полным'', если он определен для каждого состояния объекта, в противном случае он называется ''частичным''. (Например, метод deq(), который блокирует пустую очередь, является частичным, а метод, отбрасывающий исключение – полным). | ||
История H определяет (нерефлексивный) частичный порядок | История H определяет (нерефлексивный) частичный порядок <math>\to_H</math> для вызовов ее методов: m0 ! H m1, если событие результата m0 происходит раньше события вызова m1. Если история H является последовательной, то порядок H является полным. | ||
правка