我已經爲微控制器編寫了許多C程序,但從來沒有在Linux等操作系統上運行過的程序。 linux如何決定給我的應用程序多少處理時間?當我有空閒的時間讓操作系統去做別的事情並在稍後再回到我身邊時,我還需要做些什麼,以便其他進程也可以有時間運行?或者操作系統是否自動執行該操作?在Linux上運行時,C程序在空閒時間應該做什麼?
編輯:添加更多細節 我的c程序有一個任務調度程序。一些任務每100毫秒運行一次,一些每50毫秒運行一次等等。在我的主程序循環中,我調用ProcessTasks來檢查是否有任何任務已準備好運行,如果沒有準備好,它會調用一個空閒函數。空閒功能什麼都不做,只是它在那裏,所以我可以切換GPIO引腳並用O'scope監視空閒時間......或者如果我願意的話。所以也許我應該在這個空閒函數中調用sched_yield()?
所以其他的答案說,使用睡眠( )。我應該調用sleep()和sched_yield()嗎?如果是這樣的話,應該先在哪個地方叫? – PICyourBrain 2012-08-16 17:16:07
@PICyourBrain閱讀手冊。如果沒有別的事情可以做,產量會讓你的過程繼續運行,而「睡眠」會明確地導致你的過程等待。 – cnicutar 2012-08-16 17:17:30
如果您正在實現自旋鎖,則每次鎖定失敗時都要調用sleep(0)或sched_yield()。 – Arvid 2013-05-05 02:15:46