首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >msec(毫秒)与msleep_interruptible(毫秒)

msec(毫秒)与msleep_interruptible(毫秒)
EN

Stack Overflow用户
提问于 2012-06-19 05:21:22
回答 1查看 5K关注 0票数 2

我不明白这些的用法:msleepmsleep_interruptible ...我知道一个是可中断的,另一个是不可中断的,但我找不到实际可以看到的特定用法。我试着用函数调用线程来进行睡眠,并打印出"Hello!“以及之后的睡眠(Msleep_interruptible),但看不出有什么不同。有没有人可以帮我,举个例子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-19 05:49:55

不同之处在于,当一个信号(例如SIGINT)被引发,并且您为该信号设置了一个信号处理程序时会发生什么。

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

可中断睡眠的一个示例:

代码语言:javascript
复制
$ 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秒,因为它被一个处理过的信号中断了。另一个版本将打印以下内容:

代码语言:javascript
复制
Got INT signal after 3
5

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11091272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档