Here are a few:
Sleep(0)
induces a context switch, yielding to another waiting thread of equal or higher priority.- Sometimes, you don't want to use timers. Timer ticks can happen concurrently and timers cannot be stopped reliably. You can receive infinitely many ticks after a timer has been stopped due to race conditions (i.e. ticks might be queued and delivered later). If you want an action to performed one a minute, a sleep loop is a valid solution.
- Throttling of operations. Maybe you want to ask the Twitter only as much as you have quota.