This commit is contained in:
Andreas Rumpf 2020-01-27 22:50:10 +01:00 • committed by GitHub
commit c8418651b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -367,6 +367,7 @@ proc sendImpl(q: PRawChannel, typ: PNimType, msg: pointer, noBlock: bool): bool
proc send*[TMsg](c: var Channel[TMsg], msg: sink TMsg) {.inline.} = proc send*[TMsg](c: var Channel[TMsg], msg: sink TMsg) {.inline.} =
## Sends a message to a thread. `msg` is deeply copied. ## Sends a message to a thread. `msg` is deeply copied.
discard sendImpl(cast[PRawChannel](addr c), cast[PNimType](getTypeInfo(msg)), unsafeAddr(msg), false) discard sendImpl(cast[PRawChannel](addr c), cast[PNimType](getTypeInfo(msg)), unsafeAddr(msg), false)
when defined(gcDestructors):
wasMoved(msg) wasMoved(msg)
proc trySend*[TMsg](c: var Channel[TMsg], msg: sink TMsg): bool {.inline.} = proc trySend*[TMsg](c: var Channel[TMsg], msg: sink TMsg): bool {.inline.} =
@ -377,6 +378,7 @@ proc trySend*[TMsg](c: var Channel[TMsg], msg: sink TMsg): bool {.inline.} =
## Returns `false` if the message was not sent because number of pending items ## Returns `false` if the message was not sent because number of pending items
## in the channel exceeded `maxItems`. ## in the channel exceeded `maxItems`.
result = sendImpl(cast[PRawChannel](addr c), cast[PNimType](getTypeInfo(msg)), unsafeAddr(msg), true) result = sendImpl(cast[PRawChannel](addr c), cast[PNimType](getTypeInfo(msg)), unsafeAddr(msg), true)
when defined(gcDestructors):
if result: if result:
wasMoved(msg) wasMoved(msg)