summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2021-04-14 22:45:22 +0800
committerGitHub <noreply@github.com>2021-04-14 16:45:22 +0200
commit58f44c8b4e6486789a08555dccee6492d32575d4 (patch)
tree9d4cd57184415c9667fceefeb45e50e06c18bee3
parent67e28c07f9cdb22a423b0ab08d4868252acc8ea4 (diff)
downloadNim-58f44c8b4e6486789a08555dccee6492d32575d4.tar.gz
Update channels.nim (#17717)
-rw-r--r--lib/std/channels.nim8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/std/channels.nim b/lib/std/channels.nim
index 3bbc8a6b6..49def0913 100644
--- a/lib/std/channels.nim
+++ b/lib/std/channels.nim
@@ -307,8 +307,8 @@ proc sendUnbufferedMpmc(chan: ChannelRaw, data: sink pointer, size: int, nonBloc
 
   chan.head = 1
 
-  release(chan.headLock)
   signal(chan.notEmptyCond)
+  release(chan.headLock)
   result = true
 
 proc sendMpmc(chan: ChannelRaw, data: sink pointer, size: int, nonBlocking: bool): bool =
@@ -343,8 +343,8 @@ proc sendMpmc(chan: ChannelRaw, data: sink pointer, size: int, nonBlocking: bool
   if chan.tail == 2 * chan.size:
     chan.tail = 0
 
-  release(chan.tailLock)
   signal(chan.notEmptyCond)
+  release(chan.tailLock)
   result = true
 
 proc recvUnbufferedMpmc(chan: ChannelRaw, data: pointer, size: int, nonBlocking: bool): bool =
@@ -368,8 +368,8 @@ proc recvUnbufferedMpmc(chan: ChannelRaw, data: pointer, size: int, nonBlocking:
 
   chan.head = 0
 
-  release(chan.headLock)
   signal(chan.notFullCond)
+  release(chan.headLock)
   result = true
 
 proc recvMpmc(chan: ChannelRaw, data: pointer, size: int, nonBlocking: bool): bool =
@@ -404,8 +404,8 @@ proc recvMpmc(chan: ChannelRaw, data: pointer, size: int, nonBlocking: bool): bo
   if chan.head == 2 * chan.size:
     chan.head = 0
 
-  release(chan.headLock)
   signal(chan.notFullCond)
+  release(chan.headLock)
   result = true
 
 proc channelCloseMpmc(chan: ChannelRaw): bool =