resource helper(id, nap_time : int) write("helper", id, "is alive, nap_time=", nap_time) process help var napping : int do true -> napping := int(random(1000*nap_time)) writes("age=", age(), ", helper ", id, " is napping for ", napping, "ms\n") nap(napping) od end help end helper resource user() import helper var num_helpers : int := 5, nap_time : int := 3, run_time : int := 60 getarg(1, num_helpers); getarg(2, nap_time); getarg(3, run_time) write("resource user starting,", num_helpers, "helpers,", nap_time, "napping time,", run_time, "running time") fa i := 1 to num_helpers -> create helper(i, nap_time) af nap(1000*run_time); write("must stop now"); stop end user /* ............... Example compile and run(s) % sr -o dynamic dynamic.sr % ./dynamic 4 2 5 resource user starting, 4 helpers, 2 napping time, 5 running time helper 1 is alive, nap_time= 2 age=24, helper 1 is napping for 396ms helper 2 is alive, nap_time= 2 age=37, helper 2 is napping for 438ms helper 3 is alive, nap_time= 2 age=53, helper 3 is napping for 1674ms helper 4 is alive, nap_time= 2 age=66, helper 4 is napping for 365ms age=429, helper 1 is napping for 1042ms age=441, helper 4 is napping for 1076ms age=481, helper 2 is napping for 947ms age=1439, helper 2 is napping for 1837ms age=1479, helper 1 is napping for 1916ms age=1529, helper 4 is napping for 1709ms age=1739, helper 3 is napping for 829ms age=2571, helper 3 is napping for 1435ms age=3249, helper 4 is napping for 8ms age=3269, helper 4 is napping for 1702ms age=3290, helper 2 is napping for 1089ms age=3399, helper 1 is napping for 1628ms age=4019, helper 3 is napping for 817ms age=4389, helper 2 is napping for 312ms age=4710, helper 2 is napping for 822ms age=4951, helper 3 is napping for 600ms age=4979, helper 4 is napping for 1737ms age=5039, helper 1 is napping for 1777ms must stop now */