I'm designing a system that needs timers at all levels of a component hierarchy. Multiple timers may be active at once, but they need to interact with each other (stopping a component's timer stops its descendants' timers, while starting a component's timer starts its ancestors' timers and stops its siblings' timers).
The timers each have different limits, and will be sending tick, start, stop, and expire events to listeners.
This is still early in the design phase (implementation language is still undetermined), but I want to avoid a threading mess. Any advice?