mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-02 11:12:37 +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>
52 lines
879 B
Nim
52 lines
879 B
Nim
discard """
|
|
matrix: "--mm:refc"
|
|
outputsub: "EVEN 28"
|
|
"""
|
|
|
|
import threadpool, locks
|
|
|
|
block one:
|
|
proc odd(a: int) = echo "ODD ", a
|
|
proc even(a: int) = echo "EVEN ", a
|
|
|
|
proc main() =
|
|
var a: array[0..30, int]
|
|
for i in low(a)..high(a): a[i] = i
|
|
parallel:
|
|
var i = 0
|
|
while i <= 29:
|
|
spawn even(a[i])
|
|
spawn odd(a[i+1])
|
|
inc i, 2
|
|
# is correct here
|
|
|
|
main()
|
|
|
|
|
|
block two:
|
|
var echoLock: Lock
|
|
initLock echoLock
|
|
|
|
proc f(a: openArray[int]) =
|
|
for x in a:
|
|
withLock echoLock:
|
|
echo x
|
|
|
|
proc f(a: int) =
|
|
withLock echoLock:
|
|
echo a
|
|
|
|
proc main() =
|
|
var a: array[0..9, int] = [0,1,2,3,4,5,6,7,8,9]
|
|
parallel:
|
|
spawn f(a[0..2])
|
|
#spawn f(a[16..30])
|
|
var i = 3
|
|
while i <= 8:
|
|
spawn f(a[i])
|
|
spawn f(a[i+1])
|
|
inc i, 2
|
|
# is correct here
|
|
|
|
main()
|