diff options
-rw-r--r-- | fork.mu | 12 | ||||
-rw-r--r-- | mu.arc | 9 |
2 files changed, 20 insertions, 1 deletions
diff --git a/fork.mu b/fork.mu new file mode 100644 index 00000000..42f1956b --- /dev/null +++ b/fork.mu @@ -0,0 +1,12 @@ +(main + (fork (thread2 fn)) + ((1 integer) <- literal 34) + (print (1 integer)) + (jmp (-2 offset)) +) + +(thread2 + ((2 integer) <- literal 35) + (print (2 integer)) + (jmp (-2 offset)) +) diff --git a/mu.arc b/mu.arc index 1fc2c39b..ceca177e 100644 --- a/mu.arc +++ b/mu.arc @@ -164,7 +164,7 @@ (mac caller-arg-idx (context (o idx 0)) ; assignable `((((rep ,context) 'call-stack) ,idx) 'caller-arg-idx)) -(= scheduling-interval* 500) +(= scheduling-interval* 5) (def parse-instr (instr) (iflet delim (pos '<- instr) @@ -295,6 +295,13 @@ print (do1 nil (apply prn (map m arg))) + + ; multiprocessing + run + (run (v arg.0)) + fork + (enq (make-context (v arg.0)) contexts*) + reply (do (pop-stack context) (if empty.context (return ninstrs)) |