You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is the ordering of the GC_runOrc and wasMoved correct?
Intuitively I'd think that it'd be wasMoved then running GC_runOrc to handle cleaning up the ORC "roots" from the current thread? I'm not sure where/when the ORC cycle "roots" added or removed.
I could also be misunderstanding the intent of running GC_runOrc at this point, which I'd like to understand as well.
procsend*[T](c: Chan[T], src: sinkIsolated[T]) {.inline.} =## Sends item to the channel (blocking).var data = src.extract
whendefined(gcOrc) anddefined(nimSafeOrcSend):
GC_runOrc()
discardchannelSend(c.d, data.unsafeAddr, sizeof(T), true)
wasMoved(data)
The text was updated successfully, but these errors were encountered:
elcritch
changed the title
Does channel send have the right ordering?
Does channel send have the correct ordering?
Nov 14, 2023
Is the ordering of the
GC_runOrc
andwasMoved
correct?Intuitively I'd think that it'd be
wasMoved
then runningGC_runOrc
to handle cleaning up the ORC "roots" from the current thread? I'm not sure where/when the ORC cycle "roots" added or removed.I could also be misunderstanding the intent of running
GC_runOrc
at this point, which I'd like to understand as well.The text was updated successfully, but these errors were encountered: