Skip to content

Commit

Permalink
Keep Channel#close thread-safety
Browse files Browse the repository at this point in the history
  • Loading branch information
firejox committed Sep 29, 2019
1 parent cdafa0e commit 9758210
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions src/channel.cr
Expand Up @@ -92,17 +92,19 @@ class Channel(T)
end

def close
@closed = true
@lock.sync do
@closed = true

@senders.each &.fiber.enqueue
@senders.each &.fiber.enqueue

@receivers.each do |receiver|
receiver.state_ptr.value = DeliveryState::Closed
receiver.fiber.enqueue
end
@receivers.each do |receiver|
receiver.state_ptr.value = DeliveryState::Closed
receiver.fiber.enqueue
end

@senders.clear
@receivers.clear
@senders.clear
@receivers.clear
end
nil
end

Expand Down

0 comments on commit 9758210

Please sign in to comment.