Synchronous concurrency: Difference between revisions

Content added Content deleted
(Added Wren)
Line 2,839: Line 2,839:
End Sub
End Sub
End Class</lang>
End Class</lang>

=={{header|Wren}}==
<lang ecmascript>import "io" for File
var EOT = "\x04"

var readLines = Fiber.new { |fileName|
var file = File.open(fileName)
var offset = 0
var line = ""
while (true) {
var b = file.readBytes(1, offset)
offset = offset + 1
if (b == "\n") {
Fiber.yield(line)
line = "" // reset line variable
} else if (b == "\r") { // Windows
// wait for following "\n"
} else if (b == "") { // end of stream
var numLines = Fiber.yield(EOT)
System.print("Number of lines read = %(numLines)")
break
} else {
line = line + b
}
}
file.close()
}

var numLines = 0
while(true) {
var line = readLines.call("input.txt")
if (line != EOT) {
System.print(line)
numLines = numLines + 1
} else {
readLines.call(numLines)
break
}
}</lang>

{{out}}
input.txt contains the following 4 lines:
<pre>
line 1
line 2
line 3
line 4
Number of lines read = 4
</pre>


=={{header|zkl}}==
=={{header|zkl}}==