线程函数,不是说本来就是一种cpu时间的切换效果吗?
就是说流程上 A流程--B流程---线程函数----C流程----D流程
在这里,CPU执行一下线程函数,然后再往下执行一下流程,如此切换
但为何线程函数里还要弄个sleep()?不是已经能切换了么?
那为何sleep一下,下一个线程就会执行?不是说要线程处理完毕才会执行下一个线程么
追答sleep就是由你主动告诉操作系统,我这个线程暂时处理完毕了(并不是说你的代码全走完,而是在sleep这行先暂停了)。接着就要说一下sleep(0)和sleep(1)的区别了。0的话,操作系统会去判断一下,没有比你的线程优先级更高的线程想占cpu了,那么你的线程执行sleep(0)之后,依然会继续执行sleep(0)下一行代码,但如果有别的线程优先级更高,那就去执行别的线程了,等其他线程说我们也暂停一下(sleep),那才会又轮到你的线程继续走。而sleep(1)则是不管其他线程比你的线程优先级高或低,都会去执行其他线程。
追问就是说线程的切换要依靠sleep? 不是吧,有人说,线程是自动会切换的啊,照你的说法,线程切换需要纯手动命令