1

SetEvent() 和 Thread Lock() 函数有什么区别?任何人请帮助我

4

2 回答 2

0

事件可用于进程间通信,即在不同进程之间同步活动。它们通常用于“通知”活动的发生(例如,文件写入已完成)。有关事件的更多信息:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms686915%28v=vs.85%29.aspx

关键部分只能在进程中用于同步线程并使用基本的锁定/解锁概念。它们通常用于保护资源免受多线程访问(例如变量)。它们使用起来非常便宜(以 CPU 而言)。进程间变体在 Windows 中称为 Mutex。更多信息:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682530%28v=vs.85%29.aspx

于 2012-07-09T14:24:05.533 回答
0

当您想要在某个任务完成后开始/继续处理时使用事件,即您想要等到该事件发生。其他线程可以使用 通知等待线程该任务的完成SetEvent

另一方面,当您只希望一个线程一次执行一段代码时使用临界区,即您希望一组指令由一个线程执行,而此时没有任何其他线程改变状态。例如,您将一个项目插入到涉及多个步骤的链表中,此时您不希望另一个线程来尝试将另一个对象插入到列表中。因此,您阻塞另一个线程,直到第一个线程完成使用临界区。

于 2012-07-09T04:10:33.727 回答