There are main differences between mutex and critical section on Windows:
- Mutex is a kernel object. Critical section is implemented with using interlocked operations and in rare cases it uses event.
- In most cases critical section doesn't require switches from user mode to kernel mode, that is why it is much faster than mutex in general.
- Mutex can be used for synchronization of threads between different processes, but critical section can't be.
- Mutex can be named, but critical section can't be.
- Thread can wait for a mutex with using timeout, but when it is locked on critical section then timeout parameter doesn't supported.