mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-08 05:53:22 +00:00
@@ -8112,7 +8112,9 @@ Object fields and global variables can be annotated via a `guard` pragma:
|
||||
|
||||
.. code-block:: nim
|
||||
|
||||
var glock: TLock
|
||||
import std/locks
|
||||
|
||||
var glock: Lock
|
||||
var gdata {.guard: glock.}: int
|
||||
|
||||
The compiler then ensures that every access of `gdata` is within a `locks`
|
||||
@@ -8139,7 +8141,7 @@ that also implement some form of locking at runtime:
|
||||
|
||||
.. code-block:: nim
|
||||
|
||||
template lock(a: TLock; body: untyped) =
|
||||
template lock(a: Lock; body: untyped) =
|
||||
pthread_mutex_lock(a)
|
||||
{.locks: [a].}:
|
||||
try:
|
||||
@@ -8181,10 +8183,12 @@ the expressivity of the language:
|
||||
|
||||
.. code-block:: nim
|
||||
|
||||
import std/locks
|
||||
|
||||
type
|
||||
ProtectedCounter = object
|
||||
v {.guard: L.}: int
|
||||
L: TLock
|
||||
L: Lock
|
||||
|
||||
proc incCounters(counters: var openArray[ProtectedCounter]) =
|
||||
for i in 0..counters.high:
|
||||
|
||||
Reference in New Issue
Block a user