信号模块如何实现定时器



这是我的计时器代码

import signal, time

def timeoutHandler():
    raise Exception()
try:
    signal.signal(signal.SIGALRM, timeoutHandler)
    signal.setitimer(signal.ITIMER_REAL, 5)
    count = 0
    while True:
        print count
        count += 1
        time.sleep(1)
except Exception as e:
    print e

它工作得很好,困扰我的是信号模块如何实现的(我对信号没有很好的了解(

我以为实现会像

  1. 信号模块将在单独的线程中监视 SIGALRM

  2. 一旦它收到一个,它就有机会执行处理程序

  3. 我不明白的是它如何将其控制权恢复回主线程(捕获异常(

当然线程不是这里的图片,我认为我在这里缺少一些操作系统概念。

"单独的线程"是操作系统本身。 signal.settimer有效地要求操作系统在 5 秒内向此过程发送SIGALRM

最新更新