Initial commit
[minnow.git] / samples / threadring2.mno
blob2ff70441313546ca46a6432b19c59c7f522daf63
1 actor Passer
2   var int m_id
3   var Passer m_next
5   action pass(int token)
6     if (token == 0)
7       puti(m_id)
8       exit(0)
9     else
10       token = token - 1
11       m_next::pass(token)
12     end
13   end
15   action setIdAndNext(int id, Passer next)
16     m_id = id
17     m_next = next
18   end
19 end
21 action main(string[] args)
22     var int numPassers = 50300
23     spawn Passer[] passers[numPassers]
24     var int i = 0
25     while (i < numPassers-1)
26       passers[i]::setIdAndNext(i+1, passers[i+1])
27       i = i + 1
28     end
29     passers[numPassers-1]::setIdAndNext(numPassers, passers[0])
31     passers[0]::pass(convertToInt(args[0]))
32 end