mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-13 06:43:52 +00:00
@@ -65,11 +65,14 @@ iterator items*[A](x: var SharedList[A]): A =
|
||||
proc add*[A](x: var SharedList[A]; y: A) =
|
||||
withLock(x):
|
||||
var node: SharedListNode[A]
|
||||
if x.tail == nil or x.tail.dataLen == ElemsPerNode:
|
||||
node = cast[type node](allocShared0(sizeof(node[])))
|
||||
node.next = x.tail
|
||||
if x.tail == nil:
|
||||
node = cast[typeof node](allocShared0(sizeof(node[])))
|
||||
x.tail = node
|
||||
x.head = node
|
||||
elif x.tail.dataLen == ElemsPerNode:
|
||||
node = cast[typeof node](allocShared0(sizeof(node[])))
|
||||
x.tail.next = node
|
||||
x.tail = node
|
||||
if x.head == nil: x.head = node
|
||||
else:
|
||||
node = x.tail
|
||||
node.d[node.dataLen] = y
|
||||
|
||||
17
tests/stdlib/tsharedlist.nim
Normal file
17
tests/stdlib/tsharedlist.nim
Normal file
@@ -0,0 +1,17 @@
|
||||
import sharedlist
|
||||
|
||||
var
|
||||
list: SharedList[int]
|
||||
count: int
|
||||
|
||||
init(list)
|
||||
|
||||
for i in 1 .. 250:
|
||||
list.add i
|
||||
|
||||
for i in list:
|
||||
inc count
|
||||
|
||||
doAssert count == 250
|
||||
|
||||
deinitSharedList(list)
|
||||
Reference in New Issue
Block a user