What causes an "isn't responding" message?

Does the app have any timing loops, or does it rely on clock timers?