主题 : 请问一个调度问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 395
精华: 0
发帖: 31
金钱: 310 两
威望: 31 点
综合积分: 62 分
注册时间: 2008-03-26
最后登录: 2010-04-01
楼主  发表于: 2008-07-23 17:47

 请问一个调度问题

线程A为SCHED_FIFO策略,线程B为SCHED_OTHER策略。创建A,B完成后,令B先sleep一段时间,然后再唤醒。
程序的预计运行情况应该是这样地吧:

A运行
  |
  |当A结束后
  |
B才运行

但是,意想不到的事情花生鸟~~
实际运行情况是这样:

A运行
  |
  |Bsleep的时间过后
  |
B运行,A挂起
  |
  |B运行完后
  |
A继续运行未完成的部分

不明白为嘛SCHED_OTHER的B的可以将SCHED_FIFO的A给抢了。而且A里应该没有使自己阻塞的语句,就算有的话,阻塞结束后也应该立即把B再抢了,不至于B完全结束后才得以运行啊。