17 lines
585 B
Haskell
17 lines
585 B
Haskell
procedure main(A)
|
|
n := integer(A[1] | 3) # Max. number of active tasks
|
|
m := integer(A[2] | 2) # Number of visits by each task
|
|
k := integer(A[3] | 5) # Number of tasks
|
|
sem := [: |mutex([])\n :]
|
|
every put(threads := [], (i := 1 to k, thread
|
|
every 1 to m do {
|
|
write("unit ",i," ready")
|
|
until flag := trylock(!sem)
|
|
write("unit ",i," running")
|
|
delay(2000)
|
|
write("unit ",i," done")
|
|
unlock(flag)
|
|
}))
|
|
|
|
every wait(!threads)
|
|
end
|