RosettaCodeData/Task/Synchronous-concurrency/Icon/synchronous-concurrency.icon
Ingy döt Net 776bba907c Sync
2013-10-27 22:24:23 +00:00

19 lines
636 B
Text

procedure main(A)
fName := A[1]|"index.txt"
p := thread produce(fName)
c := thread consume(p)
every wait(p | c)
end
procedure produce(fName)
every !open(fName)@>> # drop messages in p's outbox (blocking whenever box is full)
@>> # Signal consumer that p is done
write("count is ",<<@) # block until message in p's inbox
end
procedure consume(p)
i := 0
while write(\<<@p) do (i+:=1) # loop until empty message in p's outbox
# (blocking until each message arrives)
i@>>p # put row count into p's inbox
end