워커들 쫙 닫을 때
하나의 chan struct{} 타입의 quit 채널을 워커마다 할당해주고
때가 됐을 때 quit 채널에 struct{}{}를 워커 개수만큼 보내는 식으로 종료 신호 보냈었음
워커마다 한개의 신호를 소비하니까
(물론 워커를 상황에 따라 개별적으로 닫아야 하는 일이 있다면 채널을 각각)
근데 그렇게 삽질할 필요 없이
close로 닫아버리면 브로드캐스팅이 되는 거였네
워커마다 대충 이런 select문이 있다면
for {
select {
case data := <-chanData:
do(data)
case <-quit:
clear()
}
}
close(quit) 한번만 해주면 각 워커의 clear가 실행됨
이걸 여태 몰랐음
하나의 chan struct{} 타입의 quit 채널을 워커마다 할당해주고
때가 됐을 때 quit 채널에 struct{}{}를 워커 개수만큼 보내는 식으로 종료 신호 보냈었음
워커마다 한개의 신호를 소비하니까
(물론 워커를 상황에 따라 개별적으로 닫아야 하는 일이 있다면 채널을 각각)
근데 그렇게 삽질할 필요 없이
close로 닫아버리면 브로드캐스팅이 되는 거였네
워커마다 대충 이런 select문이 있다면
for {
select {
case data := <-chanData:
do(data)
case <-quit:
clear()
}
}
close(quit) 한번만 해주면 각 워커의 clear가 실행됨
이걸 여태 몰랐음
댓글 0