A critical section is a sequence of instructions that only one thread at a time should be allowed to execute. We can protect critical sections using some sort of a lock which gives us a guarantee of mutual exclusion, where only one thread gets exclusive access.