# Why is the critical-section problem always presented with code in infinite loops?

I've noticed that "all" OS textbooks present the Critical-Section Problem with examples of code that are in infinite loops. E.g.,

while (true) {
// code here to do the entry section protocol

// critical section here

// code here to do the exit section protocol

// remainder section
}


Why is this? From my experience there can be many processes that run and enter critical sections (inspecting and updating shared variables) where the code is not in an infinite loop. This business of always have code in loops seem to unnecessarily complicate matters for students.

• Could it be that, at the OS level, the thread protecting the shared resource should never quit? For example, as long as the print spool is running, each process must be allowed to complete its print before another starts, but the spool is always protected by the critical section loop, even if nothing is being spooled. The protective loop will only terminate when its thread is killed externally, such as the OS removing that print spool. – Gypsy Spellweaver Jun 8 '17 at 17:54