LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2608|回复: 6

usleep和sleep函数在本质上有何区别?

[复制链接]
发表于 2003-7-14 15:22:10 | 显示全部楼层 |阅读模式
我以前好像看到过usleep是暂停线程,把cpu资源让给其他线程。
sleep也是暂停线程,但仍占用cup资源。
是不是这样的?
发表于 2003-7-14 20:12:13 | 显示全部楼层
sleep是把进程挂起,直到指定的时间到了或者接受到其它信号。
usleep没有用过,不太清楚。
发表于 2003-7-14 21:08:04 | 显示全部楼层
参数不一样
一个s级的
一个是us级和
发表于 2003-7-14 21:08:32 | 显示全部楼层
具体可以比较它们的man
发表于 2003-7-20 03:19:15 | 显示全部楼层
函数usleep、sleep都可能是用信号实现的,也许会和alarm等系统调用冲突。
推荐直接用nanosleep系统调用,它不使用信号。
当然,usleep、sleep函数也可能是用nanosleep实现的。不过保险起见,最好不用它们。
发表于 2003-7-20 11:33:16 | 显示全部楼层
那使用seelect应该也可以吧

我想select不会是用信号实现的

sleep是用信号实现的这应该是真的
可以写个程序同时使用SLEEP和alarm看看会不会同时起作用
发表于 2003-7-20 21:49:22 | 显示全部楼层
在RH9.0上,用strace看sleep函数的执行过程,发现它实际上是用nanosleep系统调用实现的,不知道其他系统上怎么样。
用select自然也可以,它不是通过信号实现的。APUE 12.5.1节也提到了通过select实现精确定时器的想法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表