Promises are now refs
This commit is contained in:
parent
a4323b06b3
commit
2de99653d0
8 changed files with 132 additions and 87 deletions
|
|
@ -153,9 +153,11 @@ when (defined(gcc) or defined(llvm_gcc)) and hasThreadSupport:
|
|||
## A value of 0 indicates typical alignment should be used. The compiler may also
|
||||
## ignore this parameter.
|
||||
|
||||
template fence*() = atomicThreadFence(ATOMIC_SEQ_CST)
|
||||
elif defined(vcc) and hasThreadSupport:
|
||||
proc addAndFetch*(p: ptr int, val: int): int {.
|
||||
importc: "NimXadd", nodecl.}
|
||||
|
||||
else:
|
||||
proc addAndFetch*(p: ptr int, val: int): int {.inline.} =
|
||||
inc(p[], val)
|
||||
|
|
@ -231,4 +233,10 @@ elif false:
|
|||
|
||||
proc cpuRelax {.inline.} = os.sleep(1)
|
||||
|
||||
when not defined(fence) and hasThreadSupport:
|
||||
# XXX fixme
|
||||
proc fence*() {.inline.} =
|
||||
var dummy: bool
|
||||
discard cas(addr dummy, false, true)
|
||||
|
||||
{.pop.}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue