rtt執行緒恢復,關鍵是第一步是有個:移除當前執行緒在任意表中的掛鉤。
這個就厲害了,避免了重複恢復。
比如我設定一定時間等待某個訊號量,等待時的操作:從就緒表中移除當前執行緒的掛鉤,將其掛到訊號量的阻塞鍊錶中。 若等待時間到了,那就執行執行緒超時函式恢復當前執行緒:移除當前執行緒的掛鉤掛到的表,然後把它掛到就緒表上。——這就避免了後面等到了訊號量它再次恢復時重複掛——因為我已經從你這個架子上移除了,你看不到我了!訊號來了你也找不到我了!這就是鍊錶的好處!
執行緒恢復的第乙個步驟:
判斷當前執行緒是否已恢復,若恢復就不用恢復它了。保證不重複恢復。
第二步驟,移除恢復執行緒掛在任何阻塞表的鉤子,掛到就緒表中。我不管你掛到哪個阻塞表,我移除的操作是不管的,反正我前面判斷你不是就緒狀態,那肯定掛到乙個鍊錶中去了——我不管你這個鍊錶是系統阻塞鍊錶、還是ipc阻塞鍊錶、還是同步阻塞鍊錶等,我不用管,我直接可以把掛鉤移除,,從你這個位置的表上拿走,我掛到就緒表上!
第三步,排程,若恢復的執行緒優先順序最高,那執行上下文切換呀,否則不切換。
完事!
RTT的執行緒同步篇 異常管理
野火rtt第25章異常 2018年12月29日 10 47 一 中斷中使用rrt的ipc通訊機制。異常分為同步異常和非同步異常。中斷屬於非同步異常。rtt建議在中斷中採用訊號量 訊息 事件來標記。中斷相關的硬體 外設 中斷控制器 cpu。中斷過程 外設產生中斷,中斷控制器設定優先順序等並向cpu傳送...
RTT工程管理
一 rtt工程管理 rtt採用scons管理工程。本次安裝版本 python 2.7.3.1.exe,python 2.7.11.msi,scons 2.3.1 setup.exe 安裝完成後,需要在環境變數中新增path c python27 scripts c python27 可用cmd下sc...
RTT工程管理
一 rtt工程管理 rtt採用scons管理工程。本次安裝版本 python 2.7.3.1.exe,python 2.7.11.msi,scons 2.3.1 setup.exe 安裝完成後,需要在環境變數中新增path c python27 scripts c python27 可用cmd下sc...