Mutex vs Event in Windows Mutex vs Event in Windows windows windows

Mutex vs Event in Windows


You use a mutex to ensure that only one thread of execution can be accessing something. For example, if you want to update a list that can potentially be used by multiple threads, you'd use a mutex:

acquire mutexupdate listrelease mutex

With a mutex, only one thread at a time can be executing the "update list".

You use a manual reset event if you want multiple threads to wait for something to happen before continuing. For example, you started multiple threads, but they're all paused waiting for some other event before they can continue. Once that event happens, all of the threads can start running.

The main thread would look like this:

create event, initial value false (not signaled)start threadsdo some other initializationsignal event

Each thread's code would be:

do thread initializationwait for event to be signaleddo thread processing


Yes, both can be used for synchronization but in different ways.

Mutex is a mutual exclusion object and can be acquired only by a single instance at a time. It is used to avoid the simultaneous use of a common resource, such as a global variable, by pieces of computer code

Event is an objet that can be explicitly set to a state by use of the SetEvent function.