互斥(mutex)和事件(event)的区别

互斥与事件...

互斥(mutex)和事件(event)的区别

互斥与事件

在C#中,有许多不同的线程同步选项。两个更广泛使用的是互斥和事件。这两者到底有什么区别?哪一个是更好的选择?

event选项可以给线程一个选项,让它阻塞直到一个事件被广播为止,因此被称为“event”。这与将某个事件置于睡眠状态,并且只有在发生重要事件时才将其唤醒是一样的。事件不同于互斥体,因为互斥体没有信令选项或函数。一旦有人能够等待信号被叫醒,事件就能够清除信号。即使是API也允许该选项阻塞,直到一个或所有不同的事件被发信号。此外,事件是内核对象。与互斥体相比,它们并不“更轻”。事件基本上是具有两种状态的内核对象。通常,一个事件表示一个事件的到来,有时甚至表示一个I/O操作的结束。

“互斥”表示互斥。它是一种用于共享资源的范围协调机制。把它看作一种交易形式。您没有义务等待,尽管您希望访问一些共享资源(仅在其他已访问的实例中)您正在阻止。互斥由两个状态组成,尽管互斥是存在的。这是为了保护一段代码,这些代码通常会更新共享资源,使其免受将互斥锁声明给将在其中释放的部分的部分。这导致没有其他线程可以通过该节。

那些试图借助互斥来模拟事件的人不得不遇到这样一个问题:一旦获得锁或发出事件信号,这个人就会把其他人拒之门外,直到锁被释放。这不是发出信号的事件的语义。在没有任何锁的情况下,事件可以保持发布状态,并且gate的形式将可用于所有线程测试。提交给进程间同步的互斥体处于内核模式对象中。在一个方法下为多线程同步所做的事件在用户模式对象中。

互斥对象太重,太一般。事件对象要轻得多。用户模式同步在大多数情况下使用,因为它提供较少的CPU周期。互斥非常像一个关键部分,用于同步对共享资源的访问。事件具有完全不同的功能,因为它们用于同步任务或管理某些人的任务调度。

事件更像是一个条件变量,与Mutex不同,Mutex在某些术语中更像amonitor,也可以是信号量/Mutex的传统形式。

总结:

1.event选项能够为线程提供阻塞选项,直到事件被广播,因此名为“event”

2.事件基本上是一个内核对象,它有两种状态。通常,一个事件表示一个事件的到来,有时甚至表示一个I/O操作的结束。

3.“互斥”代表互斥。它是共享资源的范围协调机制的一种形式。

4.致力于进程间同步的互斥体处于内核模式对象中。在一个方法下为多线程同步所做的事件在用户模式对象中。

5.事件更像是一个条件变量,不像Mutex,Mutex在某些术语中更像amonitor,也可以是传统的信号量/Mutex形式。

  • 发表于 2021-06-23 17:48
  • 阅读 ( 169 )
  • 分类:通用

你可能感兴趣的文章

事件(incident)和事件(event)的区别

事件与事件 由于具有相似的含义,如果不知道事件和事件的区别,就不能在英语中准确地使用它们。incident这个词既用作名词也用作形容词,而event这个词只用作名词。event这个词起源于16世纪晚期。根据《牛津英语词典》,in...

  • 发布于 2020-10-22 22:12
  • 阅读 ( 272 )

代表(delegates)和c中的事件#(events in c#)的区别

代表(delegates)和c中的事件#(events in c#)的区别 C是微软开发的一种编程语言。它支持结构化编程和面向对象编程。委托和事件用于C中的事件驱动编程。委托是指向方法的类型安全指针。在具有图形用户界面(GUI)的应用程序中...

  • 发布于 2020-10-24 02:21
  • 阅读 ( 211 )

树形图

...解数学中的树形图 树形图允许用户从一个点开始,做出互斥的决定或经历互斥的事件,以沿着树的分支走下去。一旦为每个节点分配了适当的值,使用树形图就很简单了。 代表可能结果的机会节点必须分配一个概率。决策节...

  • 发布于 2021-06-01 11:02
  • 阅读 ( 224 )

互斥(mutex)和信号量(semaphore)的区别

互斥与信号量 互斥锁类似于房间的一把钥匙。一个人拿着钥匙,就像一根线,是唯一能进入房间的人。有权限的人必须把钥匙交给下一个排队的人。因此,只有获取互斥锁的线程才能释放互斥锁。 互斥锁通常用于序列化对可...

  • 发布于 2021-06-23 04:03
  • 阅读 ( 193 )

iphoto相册(iphoto album)和事件(event)的区别

...oto界面时,让新用户感到困惑的最常见因素之一是相册和事件之间的差异。为了充分理解iPhoto相册和事件之间的区别,必须对应用程序进行简要概述。 iPhoto实际上是iLife应用程序套件的一部分,自2002年初以来,Macintosh生产的每...

  • 发布于 2021-06-23 13:17
  • 阅读 ( 137 )

互斥(mutex)和信号量(semaphore)的区别

互斥与信号量 互斥锁用于提供对可重入代码中不能由多个线程并行执行的部分的序列化访问。互斥确保一次只有一个代码可以访问受控部分。为了获得访问权限,其他代码被设置为等待第一个代码退出。你可以把它当作房间的...

  • 发布于 2021-06-23 19:42
  • 阅读 ( 467 )

历史(history)和传奇(legend)的区别

主要区别——历史与传奇 历史和传说与过去的事件和事件有关。但历史和传说有一个主要区别;历史可以被证据证明,被认为是真实的,而传说被认为是真实的,尽管它们没有任何历史证据的支持。 什么是历史(history)?...

  • 发布于 2021-06-27 09:02
  • 阅读 ( 209 )

攻击(onset)和开始(outset)的区别

...跟着介词of。顾名思义,这个名词主要用来表示不愉快的事件。 发作也有攻击或攻击的意思,尽管这个意思在今天并不常用。起效的负面含义可能来自这个词的次要含义。 Sneezing might indicate the ***et of a cold. 开始-含义和用法 牛津...

  • 发布于 2021-06-28 01:18
  • 阅读 ( 216 )

同步(synchronous)和java中的异步调用(asynchronous calls in java)的区别

...主要区别在于,在同步调用中,代码执行在继续之前等待事件,而异步调用不会阻止程序执行代码。 程序员可以将回调函数作为参数传递给另一个函数。它是在事件之后执行的。当我们需要在点击按钮或从互联网获取数据后执...

  • 发布于 2021-07-01 14:57
  • 阅读 ( 831 )

互斥(mutex)和信号量(semaphore)的区别

互斥和信号量的主要区别在于互斥是一种锁定机制,而信号量是一种信令机制。 当多个进程同时访问共享数据时,会导致数据不一致。为了保持数据的一致性,必须保持进程的执行顺序。此外,关键部分是访问共享变量或共享...

  • 发布于 2021-07-01 22:06
  • 阅读 ( 431 )
XuXuJunJun
XuXuJunJun

0 篇文章

相关推荐