mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 06:18:51 +00:00
replace defer with try ... finally (#17753)
This commit is contained in:
@@ -47,9 +47,9 @@ proc release*(lock: var RLock) =
|
||||
|
||||
template withRLock*(lock: var RLock, code: untyped): untyped =
|
||||
## Acquires the given lock and then executes the code.
|
||||
block:
|
||||
acquire(lock)
|
||||
defer:
|
||||
release(lock)
|
||||
{.locks: [lock].}:
|
||||
acquire(lock)
|
||||
{.locks: [lock].}:
|
||||
try:
|
||||
code
|
||||
finally:
|
||||
release(lock)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
discard """
|
||||
cmd: "nim $target --threads:on $options $file"
|
||||
matrix: "--threads:on"
|
||||
"""
|
||||
|
||||
import rlocks
|
||||
import std/rlocks
|
||||
|
||||
var r: RLock
|
||||
r.initRLock()
|
||||
@@ -10,4 +10,11 @@ doAssert r.tryAcquire()
|
||||
doAssert r.tryAcquire()
|
||||
r.release()
|
||||
r.release()
|
||||
|
||||
block:
|
||||
var x = 12
|
||||
withRLock r:
|
||||
inc x
|
||||
doAssert x == 13
|
||||
|
||||
r.deinitRLock()
|
||||
|
||||
Reference in New Issue
Block a user