Think about it. Have you ever tried compressing a large file in WinRAR and then tried playing a game that uses a lot of CPU resources without WinRAR put in the background? It will run too slow to do anything in it. This is because WinRAR purposely uses as much CPU as possible in order to complete more quickly.

This is true all around the board. Have you ever had a program freeze and suddenly other programs stopped working until you killed the process? Programs should all have equal access to the CPU, but that isn't really a good use of the CPU because some program don't need as much CPU and some need more.

Now, take that and add it into multiple programs trying to access the same data/file/memory location/etc. When that happens, everything trying to do so will be frozen.

In any case, avoid looping when there isn't a reason to do so. Especially a loop that has no internal way to break out of it. (Checking a variable that *may* be set at some point is not a real way to break out of a loop). Remember that loops are very fast assuming nothing major is being done in them. You may have hundreds or thousands per second. That's a complete waste of resources even if things didn't freeze on you. A timer, even one set to trigger ever 100ms or whatever, would be much better. It would save a LOT of resources.