19 lines
636 B
Text
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
|