A critical resource is a resource that is accessible by two or more threads, but which can only be used by one thread at a time.
A critical section is the portion of a thread's code which accesses a critical resource.
The critical section problem is the problem of providing a way for threads to execute their critical section code so that the following 3 conditions are satisfied:
- Mutual Exclusion
- Bounded Waiting
- Progress