parent
4846ce0f41
commit
2ecdf582a8
3 changed files with 22 additions and 0 deletions
|
|
@ -59,6 +59,7 @@ proc signal*(cond: var Cond) {.inline.} =
|
|||
template withLock*(a: Lock, body: untyped) =
|
||||
## Acquires the given lock, executes the statements in body and
|
||||
## releases the lock after the statements finish executing.
|
||||
mixin acquire, release
|
||||
a.acquire()
|
||||
{.locks: [a].}:
|
||||
try:
|
||||
|
|
|
|||
10
tests/stdlib/tlocks.nim
Normal file
10
tests/stdlib/tlocks.nim
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
discard """
|
||||
output: '''3'''
|
||||
cmd: "nim $target --threads:on $options $file"
|
||||
"""
|
||||
|
||||
#bug #6049
|
||||
import uselocks
|
||||
|
||||
var m = createMyType[int]()
|
||||
echo $m.use()
|
||||
11
tests/stdlib/uselocks.nim
Normal file
11
tests/stdlib/uselocks.nim
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import locks
|
||||
|
||||
type MyType* [T] = object
|
||||
lock: Lock
|
||||
|
||||
proc createMyType*[T]: MyType[T] =
|
||||
initLock(result.lock)
|
||||
|
||||
proc use* (m: var MyType): int =
|
||||
withLock m.lock:
|
||||
result = 3
|
||||
Loading…
Add table
Add a link
Reference in a new issue