well it can also keep your code from getting into some nasty problems, there is an old term "deadly embrace"
where a wants someting that b has and is holding x waiting for b to finish.
b can't finish till it gets x so it's wating for a to let go of it.
many ways to solve that , some use timeouts, some use locking etc....
fun stuff like that can happen where you do not even see it till you hit a critical load then *BAM* it goes to heck and you have to find the lock-point in the code.