如果我这样做,请有人解释一下有什么区别
mutex = createMutex
waitForSingleObject
Release(mutex)
和
event = createEvent
waitForSingleObject
Release(event)
我很困惑,我可以使用两个版本进行同步吗?提前感谢您的帮助
如果我这样做,请有人解释一下有什么区别
mutex = createMutex
waitForSingleObject
Release(mutex)
和
event = createEvent
waitForSingleObject
Release(event)
我很困惑,我可以使用两个版本进行同步吗?提前感谢您的帮助
您使用互斥锁来确保只有一个执行线程可以访问某些内容。例如,如果要更新可能由多个线程使用的列表,则使用互斥锁:
acquire mutex
update list
release mutex
使用互斥锁,一次只能有一个线程执行“更新列表”。
如果您希望多个线程在继续之前等待某些事情发生,则使用手动重置事件。例如,您启动了多个线程,但在它们可以继续之前,它们都会暂停等待其他事件。一旦该事件发生,所有线程都可以开始运行。
主线程看起来像这样:
create event, initial value false (not signaled)
start threads
do some other initialization
signal event
每个线程的代码都是:
do thread initialization
wait for event to be signaled
do thread processing
您使用互斥锁来确保只有一个执行线程可以访问某些内容。例如,如果要更新可能由多个线程使用的列表,则使用互斥锁:
acquire mutex
update list
release mutex
使用互斥锁,一次只能有一个线程执行“更新列表”。
如果您希望多个线程在继续之前等待某些事情发生,则使用手动重置事件。例如,您启动了多个线程,但在它们可以继续之前,它们都会暂停等待其他事件。一旦该事件发生,所有线程都可以开始运行。
主线程看起来像这样:
create event, initial value false (not signaled)
start threads
do some other initialization
signal event
每个线程的代码都是:
do thread initialization
wait for event to be signaled
do thread processing
是的,两者都可以用于同步,但方式不同。
互斥 是一个互斥对象,一次只能由一个实例获取。它用于避免通过计算机代码片段同时使用公共资源,例如全局变量
事件 是一个可以通过使用SetEvent函数显式设置为状态的对象。