15 lines
616 B
Text
15 lines
616 B
Text
fcn reader(fileName,out){
|
|
n:=0; foreach line in (File(fileName)) { out.write(line); n+=1; }
|
|
out.close(); // signal done
|
|
Atomic.waitFor(out.Property("isOpen")); // wait for other thread to reopen Pipe
|
|
out.write(n);
|
|
}
|
|
fcn writer(in){
|
|
Utils.zipWith(fcn(n,line){ "%3d: %s".fmt(n,line).print() },[1..],in);
|
|
in.open(); // signal other thread to send num lines read
|
|
println("Other thread read ",in.read()," lines");
|
|
}
|
|
|
|
p:=Thread.Pipe(); // NOT Unix pipes, thread safe channel between threads
|
|
reader.launch("input.txt",p);
|
|
writer.future(p).noop(); // noop forces eval, ie sleep until writer finished
|