gpt4 book ai didi

language-agnostic - sleep() 是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 12:11:59 27 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但如何sleep() , wait() , pause() ,函数工作?

最佳答案

我们可以从更抽象的角度来看休眠操作:它是一种让您等待事件的操作。
当时间从 sleep 过去时触发有问题的事件调用超过 sleep 参数。

当一个进程处于事件状态时(即:它拥有一个 CPU),它可以以主动或被动的方式等待事件:

  • 主动等待是指进程主动/明确等待事件:
    sleep( t ):
    while not [event: elapsedTime > t ]:
    NOP // no operatior - do nothing

    这是一个微不足道的算法,可以以可移植的方式在任何地方实现,但存在的问题是,当您的进程正在积极等待时,它仍然拥有 CPU,浪费它(因为您的进程并不真正需要 CPU,而其他任务可能需要它)。

    通常这应该只由那些不能被动等待的进程来完成(见下点)。
  • 被动等待是通过在事件发生时请求其他东西唤醒您并挂起自己(即:释放 CPU)来完成的:
    sleep( t ):
    system.wakeMeUpWhen( [event: elapsedTime > t ] )
    release CPU

    为了实现被动等待,您需要一些外部支持:您必须能够释放您的 CPU 并在事件发生时要求其他人唤醒您。

    这在单任务设备(如许多嵌入式设备)上是不可能的,除非硬件提供 wakeMeUpWhen操作,因为没有人可以释放 CPU 或要求被唤醒。

    x86 处理器(和大多数其他处理器)提供 HLT使 CPU 休眠直到触发外部中断的操作。通过这种方式,操作系统内核也可以休眠以保持 CPU 冷却。
  • 关于language-agnostic - sleep() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911739/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com