yield()是多线程通信的方法吗?

解决方案 »

  1.   

    不是. 只是暂时让出cpu. 
      

  2.   

    那sleep()呢 它是通信的吗
      

  3.   

    sleep是睡眠啊 是暂停线程的执行时间
      

  4.   

    yield表示线程没等自己的时间片跑完自动放弃运行时间,回到可运行状态的方法
      

  5.   

    yield()只是暂时让出cpu,这个线程从新回到多个线程组成的队列里面,暂时yield()的线程有可能继续被cpu选中执行。
      

  6.   

    从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。
    但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。
    或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep。
    sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。
    sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会。感觉自己表达不清楚,网上找了点。。希望对你有用