最近在讀一段code, 發現作者很喜歡用time.sleep(0)這個用法, 但令我百思不得其解的是我們都知道sleep的用法, sleep(1)就是等一秒後, 如果被OS排班到我們才會繼續執行這個thread, 但是sleep(0) 到底是怎麼一回事呢?
原來是當我們想要thread主動的讓出它執行cpu的所有權,便會使用這樣的手法
有另一個API叫做sched_yield(), 它是直接強制的讓這個thread釋出所有權, 而sleep(0)這個方式比較緩和, 他頂多就是讓OS再去決定這時候執行的人應該換誰了, 而可能的執行的thread還是原本呼叫sleep(0)的thread
哪個比較優呢?就端看你的程式怎樣運行了
參考資料:What is the difference between sleep(0) and sched_yield()?