gpt4 book ai didi

c - msleep(毫秒)与 msleep_interruptible(毫秒)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:51 24 4
gpt4 key购买 nike

我不明白这些的用法:msleepmsleep_interruptible ...我知道一个是可中断的,另一个是不可中断的,但找不到某些用法在哪里我真的可以看到。我尝试调用具有函数的线程来 msleep 并打印说“你好!”和 msleep(msleep_interruptible) 之后,但看不出有什么区别。任何人都可以帮我解决这个问题吗?

最佳答案

不同之处在于当发出信号(例如 SIGINT)并为该信号设置信号处理程序时会发生什么。

  • msleep 回去 sleep
  • msleep_interruptible 返回给调用者(用一个非零值表示剩余的 sleep 时间)。

可中断 sleep 的示例:

$ perl -Mthreads -E'
my $stime=time;
async { sleep(3); kill INT => $$; }->detach();
$SIG{INT} = sub { warn "Got INT signal after ".(time-$stime)."\n"; };
sleep(5);
say time-$stime;
'
Got INT signal after 3
3

它休眠了 3 秒而不是 5 秒,因为它被处理过的信号打断了。另一个版本将打印以下内容:

Got INT signal after 3
5

换句话说,无论哪种方式都会调用信号处理程序,但即使有信号进入,一个版本也不会返回。

关于c - msleep(毫秒)与 msleep_interruptible(毫秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091272/

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