RosettaCodeData/Task/Synchronous-concurrency/Scala/synchronous-concurrency.scala
2014-01-17 05:34:36 +00:00

24 lines
489 B
Scala

case class HowMany(asker: Actor)
val printer = actor {
var count = 0
while (true) {
receive {
case line: String =>
print(line); count = count + 1
case HowMany(asker: Actor) => asker ! count; exit()
}
}
}
def reader(printer: Actor) {
scala.io.Source.fromFile("c:\\input.txt").getLines foreach { printer ! _ }
printer ! HowMany(
actor {
receive {
case count: Int => println("line count = " + count)
}
})
}
reader(printer)