Значение, проходящее через каналы - PullRequest
0 голосов
/ 28 мая 2019

Согласно http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Нет значения, проходящего через каналы, но это легко кодируется общей переменной: определите глобально переменную x и используйте ее для чтения и записи."

Пример Train-Gate, который сопровождает Uppaal, кажется, выполняет передачу значения через канал. Я также создал небольшой пример, где производитель считает в цикле от 1 до 6 и передает comm[getN()]!по каналу связи (getN() просто извлекает локальную переменную). Потребитель синхронизируется с этим сообщением comm[n]? и сохраняет переданное целочисленное значение в локальной переменной.

Это противоречит приведенному выше утверждению.Я пропустил что-то тонкое здесь? Это не передача значений через каналы? Или это утверждение просто больше не соответствует действительности?

Я включил свой полный пример (provider-consumer.xml) через Pastebin: https://pastebin.com/ZTL46Wr8

Спасибо

1 Ответ

1 голос
/ 29 мая 2019

В вашей модели нет передачи значения. На самом деле вы имитируете передачу значения, используя синхронизацию каналов с тем же именем: comm [n]! где n на самом деле переменная и comm [k]? где k - селектор, то есть постоянное значение. Потребитель фактически не получает значение n; он получает информацию о том, что comm [n] испущено для некоторого фиксированного значения n.

...