mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* defaults to Orc * bootstrap using refc * use gc * init orc defines * unregister orc * fix gc * fix commands * add prepareMutation for orc * enable deepcopy for orc * prepareMutation * more fixes * some cases * bug #20081 * partial fixes * partial fixes * fixes command line * more fixes * build Nim with refc * use gc * more fixes * rstore * orc doesn't support threadpool * more shallowCopy * more fixes * fixes unsafeNew * workarounds * small * more fixes * fixes some megatest * tcodegenbugs1 refc * fxies megatest * build nimble with refc * workaround tensordsl tests * replace shallowCopy with move * fixes action * workaround * add todo * fixes important packages * unpublic unregisterArcOrc * fixes cpp * enable windows Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com>
35 lines
651 B
Nim
35 lines
651 B
Nim
discard """
|
|
matrix: "--mm:refc"
|
|
output: '''true'''
|
|
"""
|
|
|
|
# bug #7638
|
|
import threadpool, os
|
|
|
|
proc timer(d: int): int =
|
|
#echo fmt"sleeping {d}"
|
|
sleep(d)
|
|
#echo fmt"done {d}"
|
|
return d
|
|
|
|
var durations = [1000, 1500, 2000]
|
|
var tasks: seq[FlowVarBase] = @[]
|
|
var results: seq[int] = @[]
|
|
|
|
for i in 0 .. durations.high:
|
|
tasks.add spawn timer(durations[i])
|
|
|
|
var index = blockUntilAny(tasks)
|
|
while index != -1:
|
|
results.add ^cast[FlowVar[int]](tasks[index])
|
|
tasks.del(index)
|
|
#echo repr results
|
|
index = blockUntilAny(tasks)
|
|
|
|
doAssert results.len == 3
|
|
doAssert 1000 in results
|
|
doAssert 1500 in results
|
|
doAssert 2000 in results
|
|
sync()
|
|
echo "true"
|