mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* test azure * use exit 1 * try again * use useSysAssert * disable i386 * use refc for tlsEmulation on i386 * use refc * disable i386 Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
51 lines
896 B
Nim
51 lines
896 B
Nim
discard """
|
|
disabled: i386
|
|
outputsub: "Just a simple text for test"
|
|
"""
|
|
|
|
type
|
|
TMsgKind = enum
|
|
mLine, mEof
|
|
TMsg = object
|
|
case k: TMsgKind
|
|
of mEof: discard
|
|
of mLine: data: string
|
|
|
|
var
|
|
producer, consumer: Thread[void]
|
|
chan: Channel[TMsg]
|
|
printedLines = 0
|
|
prodId: int
|
|
consId: int
|
|
|
|
proc consume() {.thread.} =
|
|
consId = getThreadId()
|
|
while true:
|
|
var x = recv(chan)
|
|
if x.k == mEof: break
|
|
echo x.data
|
|
atomicInc(printedLines)
|
|
|
|
proc produce() {.thread.} =
|
|
prodId = getThreadId()
|
|
var m: TMsg
|
|
var input = open("tests/dummy.txt")
|
|
var line = ""
|
|
while input.readLine(line):
|
|
m.data = line
|
|
chan.send(m)
|
|
close(input)
|
|
m = TMsg(k: mEof)
|
|
chan.send(m)
|
|
|
|
open(chan)
|
|
createThread[void](consumer, consume)
|
|
createThread[void](producer, produce)
|
|
joinThread(consumer)
|
|
joinThread(producer)
|
|
|
|
close(chan)
|
|
doAssert prodId != consId
|
|
echo printedLines
|
|
|