当前位置: 首页 > 知识库问答 >
问题:

sem_post是否唤醒一个随机进程

笪栋
2023-03-14

假设10个进程使用sem_wait().
等待一个信号量,第11个进程调用该信号量的sem_post。
10个进程中哪一个将进入临界块?
像随机吗?所有进程将被唤醒并努力实现锁。
,CPU将为其中一个进程提供锁,其余的进程将返回等待状态

共有1个答案

勾喜
2023-03-14

POSIX标准没有指定哪个线程将被唤醒。此外,如果没有人工延迟,线程不可能按照定义良好的顺序开始等待信号量。

实际上,它可能是等待时间最长的线程,因为队列结构用于记录等待同步对象的线程。它肯定不会是一个‘随机’线程。但它也不是为了代码的正确性而应该依赖的东西。

 类似资料:
  • 问题内容: Java的Object.wait()警告“虚假唤醒”,但C#的Monitor.wait()似乎根本没有提及。 了解Mono是如何在Linux之上实现的,并且Linux具有虚假的唤醒功能,难道不应该在某个地方对此进行记录吗? 问题答案: Joe Duffy的“Windows并行编程”中提到了这一点(P311-312,P598)。这一点很有趣: 请注意,在以上所有示例中,线程必须对所谓的虚

  • 问题内容: 看到各种与锁定相关的问题,并且(几乎)总是发现“由于虚假唤醒而引起的循环” 1我想知道,有人经历过这种唤醒(例如,假设硬件/软件环境不错)吗? 我知道“虚假”一词没有明显的原因,但是发生此类事件的原因可能是什么? (1注意:我不是在问循环练习。) 编辑:一个帮助器问题(对于那些喜欢代码示例的人): 如果我有以下程序,并且运行它: 我该怎么做才能虚假地唤醒它,而不必永远等待随机事件? 问

  • 问题内容: 我有以下方法: 从视图中调用它: 如您所见,_attempt方法期望actor为type ,但是该对象似乎为type 。为什么会这样呢?更重要的是,如何将(显然是User对象的一种包装器)转换为对象? 有关更多信息,请参见:https : //docs.djangoproject.com/en/dev/ref/request- response/#django.http.HttpReq

  • 下面我们来看看睡眠和醒来的基本模型。假设有两个系统调用作为睡眠和唤醒。呼叫睡眠的过程将被阻止,而调用的过程将被唤醒。 有一个叫做生产者消费者问题的流行例子,它是模拟睡眠和唤醒机制的最流行的问题。 睡眠和觉醒的概念非常简单。如果关键部分不是空的,那么该过程将进入休眠状态。它将被临界区内正在执行的其他进程唤醒,以便进程可以进入临界区。 在生产者消费者问题中,让我们说有两个过程,一个过程写某事,而另一个

  • 休眠与唤醒 [HW,ACPI] acpi_sleep={s3_bios,s3_mode,s3_beep,s4_nohwsig,old_ordering,nonvs,sci_force_enable} ACPI休眠选项。 (1)s3_bios和s3_mode与显卡有关。计算机从S3状态(挂起到内存)恢复时,硬件需要被正确的初始化。这对大多数硬件都不是问题,但因为显 卡是由BIOS初始化的,内核无法获