Skip to content

Commit 8f6a368

Browse files
authored
Merge pull request #27 from ZoomRmc/channelsfixes
Fix conditional signaling bug, fix overriding `=` hook
2 parents 2544b57 + f9672ae commit 8f6a368

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

threading/channels.nim

+5-9
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ proc sendUnbufferedMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: st
211211
chan.tail = 1
212212

213213
release(chan.lock)
214-
when blocking:
215-
signal(chan.dataAvailableCV)
214+
signal(chan.dataAvailableCV)
216215
result = true
217216

218217
proc sendMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: static bool): bool =
@@ -251,8 +250,7 @@ proc sendMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: static bool)
251250
chan.head = 0
252251

253252
release(chan.lock)
254-
when blocking:
255-
signal(chan.dataAvailableCV)
253+
signal(chan.dataAvailableCV)
256254
result = true
257255

258256
proc recvUnbufferedMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: static bool): bool =
@@ -280,8 +278,7 @@ proc recvUnbufferedMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: st
280278
assert chan.isEmptyUnbuf()
281279

282280
release(chan.lock)
283-
when blocking:
284-
signal(chan.spaceAvailableCV)
281+
signal(chan.spaceAvailableCV)
285282
result = true
286283

287284
proc recvMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: static bool): bool =
@@ -320,8 +317,7 @@ proc recvMpmc(chan: ChannelRaw, data: pointer, size: int, blocking: static bool)
320317
chan.tail = 0
321318

322319
release(chan.lock)
323-
when blocking:
324-
signal(chan.spaceAvailableCV)
320+
signal(chan.spaceAvailableCV)
325321
result = true
326322

327323

@@ -340,7 +336,7 @@ proc `=destroy`*[T](c: var Chan[T]) =
340336
else:
341337
atomicDec(c.d.atomicCounter)
342338

343-
proc `=`*[T](dest: var Chan[T], src: Chan[T]) =
339+
proc `=copy`*[T](dest: var Chan[T], src: Chan[T]) =
344340
## Shares `Channel` by reference counting.
345341
if src.d != nil:
346342
atomicInc(src.d.atomicCounter)

0 commit comments

Comments
 (0)