Многопоточность в модели SPIN
Как мы можем параметризовать модель SPIN с количеством потоков? Я использую стандартную модель проверки SPIN. Есть ли варианты для установки количества параллельных потоков? Я проверил ссылку, но не нашел ничего полезного
1 ответ
Вы можете динамически порождать процесс Promela, используя run
оператор. Таким образом, вы можете повторять как:
#define TRY_COUNT 5
byte index = 0;
do
:: index == TRY_COUNT -> break
:: else -> index++; run theProcess()
od
Вы также можете определить файл как:
active [TRY_COUNT] proctype foo () {
printf ("PID: %d\n", _pid);
assert (true)
}
init {
assert (true)
}
и затем запустите симуляцию SPIN:
$ spin -DTRY_COUNT=4 bar.pml
PID: 2
PID: 0
PID: 1
PID: 3
5 processes created
или проверка
$ spin -DTRY_COUNT=4 -a bar.pml
$ gcc -o bar pan.c
$ ./bar
hint: this search is more efficient if pan.c is compiled -DSAFETY
(Spin Version 6.3.2 -- 17 May 2014)
+ Partial Order Reduction
...