The more I try things, the more I'm confused. Even this example, without any
ref, does not work:
import locks
import os
var s: string
var c: int
var l: Lock
proc myFunc() {.thread.} =
for i in 0..<50:
os.sleep(1)
{.gcsafe.}:
withLock l:
echo "S = ",s
s.add($c)
s &= " "
inc c
initLock(l)
var thr: array[5, Thread[void]]
for i in 0..4:
createThread(thr[i], myFunc)
joinThreads(thr)
echo s
deinitLock(l)
echo "Done."
Run
- Strange race condition on Windows vanyle
- Strange race condition on Windows vanyle
- Strange race condition on Windows Araq
- Strange race condition on Windows vanyle
- Strange race condition on Windows jrfondren
- Strange race condition on Windows vanyle
- Strange race condition on Windows vanyle
- Strange race condition on Windows vanyle
- Strange race condition on Windows brainproxy
- Strange race condition on Windows vanyle
- Strange race condition on Windows brainproxy
- Strange race condition on Windows vanyle
- Strange race condition on Windows vanyle
- Strange race condition on Windows sls1005
- Strange race condition on Windows Araq
- Strange race condition on Windows Araq
- Strange race condition on Windows vanyle
- Strange race condition on Windows vanyle
