当前位置:  技术问答>linux和unix

新手,请教一个linux线程调度问题

    来源: 互联网  发布时间:2016-05-09

    本文导语:  线程A为SCHED_FIFO策略,线程B为SCHED_OTHER策略。创建A,B完成后,令B先sleep一段时间,然后再唤醒。 程序的预计运行情况应该是这样地吧: A运行   |   |当A结束后   | B才运行 但是,意想不到的事情花生鸟~~ 实际运...

线程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完全结束后才得以运行啊。

等待各位指点!多谢!

|
不是一言两语说得清,CPU有个时钟,时钟一到会重新调度,并不是说会一定等你正在执行的任务执行完才会去执行别的任务的。很浅显的例子,你写一个死循环的程序,你的程序执行起来了,你的系统还是可以运行良好,并不会一直执行在这个死循环(如果时时刻刻都在执行这个死循环,那你的系统就别的任何事情都干不了,事实不是这样,虽然会慢一点)

|
cpu调度根据优先级计算出运行时间片,这只能保证优先级高的线程多一点时间来运行,并不保证一定是优先级高的代码运行完再运行优先级的底的线程。所以b打断a是因为a在所得的时间片内没能运行完程序,这个是正常的。如果你想要做到a线程完再启动b线程,可以采用多线程同步手段来实现。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!
  • 新手请教Linux和ubuntu
  • Linux新手请教声卡驱动!!!!!!!!!!!
  • 新手来请教一个关于IDE的问题
  • 大家好,我是linux新手,有些问题请教
  • 新手,有问题请教!
  • 新手,请教关于文件编辑问题...
  • 新手请教:RedHat Linux 7.3下的网络连接问题
  • 新手请教arm与linux的问题
  • 新手虚心请教.在线等复....vsftp配置成功后,本机可以FTP上,但其他系统通过FTP工具不能上.防火墙不能关..
  • 新手,请教关于文件编辑问题... iis7站长之家
  • 新手,请教安装SCO Unix的问题
  • 新手请教!!!!
  • 新手请教2
  • 新手请教:我的声卡所附光盘提供了下面的这些文件,我怎么安装驱动?
  • 新手的问题,请教高手
  • 新手请教安装问题!
  • 新手向大家请教jsp,servlet的调试,发布问题
  • 我是新手,请教LINUX下如何访问光驱里的文件。
  • 新手请教一下学习GCC的经验
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3