Having a go routine wait for a channel can block the execution of that goroutine and prevent it from doing things like responding to a unix kill signal. Better idea is to Jane it continuously execute a select statement where one case is to check the status of the channel carrying the signal from the broadcast function, and another case is a sleep of one second - this way you limit blocking to a max of one second.