discard""" outputsub: "All rights reserved.""""typeTMsgKind=enummLine,mEofTMsg=object{.pure,final.}casek:TMsgKindofmEof:nilofmLine:data:stringvarproducer,consumer:TThread[void]chan:TChannel[TMsg]printedLines=0procconsume(){.thread.}=whiletrue:varx=recv(chan)ifx.k==mEof:breakechox.dataatomicInc(printedLines)procproduce(){.thread.}=varm:TMsgvarinput=open("readme.txt")varline=""whileinput.readLine(line):m.data=linechan.send(m)close(input)m.k=mEofchan.send(m)open(chan)createThread[void](consumer,consume)createThread[void](producer,produce)joinThread(consumer)joinThread(producer)close(chan)echoprintedLines