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}}== |