Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1319827
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: LINUX

2012-09-25 21:42:39

mdelay是忙等待函数,在延迟过程中无法运行其他任务.这个延迟的时间是准确的.是需要等待多少时间就会真正等待多少时间.

而msleep是休眠函数,它不涉及忙等待.你如果是msleep(10),那实际上延迟的时间,大部分时候是要多于10ms的,是个不定的时间值


一个对msleep()的调用是不可中断的; 能确保进程睡眠至少给定的毫秒数

void msleep(unsigned int msecs){

    unsigned long timeout = msecs_to_jiffies(msecs) + 1;

    while (timeout)

        timeout = schedule_timeout_uninterruptible(timeout);

}

msleep()是让当前进程休眠,让出CPU给其它进程使用,等到时间到了之后再唤醒。由此看来,msleep()不能用于中断上下文中。

mdelay()是一个让CPU空转,一直等待到给定的时间后才退出。

阅读(6865) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~