# MultiChanTicker The idea of this ticker is to multiply the output channels. The original Golang `time.Ticker` provides only a single output channel, so the signal can only be received by a single other class. This ticker allows to add multiple channels which get all notified about the time tick. ```golang type MultiChanTicker interface { Init(duration time.Duration) AddChannel(chan time.Time) } ``` The MultiChanTicker is created similarly to the common `time.Ticker`: ```golang NewTicker(duration time.Duration) MultiChanTicker ``` Afterwards, you can add channels: ```golang t := MultiChanTicker(duration) c1 := make(chan time.Time, 1) c2 := make(chan time.Time, 1) t.AddChannel(c1) t.AddChannel(c2) for { select { case t1 := <- c1: log.Print(t1) case t2 := <- c2: log.Print(t2) } } ``` The result should be the same `time.Time` output in both channels, notified "simultaneously". Ticks are delivered with a non-blocking send: a consumer that has not yet read the previous tick does not stall the ticker (which would silently drop `time.Ticker` fires for all consumers); instead, the tick for that consumer is skipped and a warning is logged. Register buffered channels (capacity 1) so a consumer that is briefly busy at tick time does not lose the tick.