這些天我絞盡腦汁想利用上下文來實現任務管理。代碼在這裡。
與該專案中的其他所有內容一樣,這是 Maziero 教授內容的另一個「任務」。
任務管理系統是使用系統上下文來實現的。它透過執行一項任務直到明確轉移到另一項任務來管理協作任務。
task_t 結構:代表一個任務,儲存執行上下文、識別符(ID)和指針,以方便建立任務的雙向連結佇列。
typedef struct task_t { struct task_t *prev, *next; // ponteiros para usar em filas int id; // identificador da tarefa ucontext_t context; // contexto armazenado da tarefa short status; // pronta, rodando, suspensa, ... // ... (outros campos serão adicionados mais tarde) } task_t;
初始化:呼叫ppos_init()函數來設定程式的主上下文。這使系統準備好管理多個任務。
任務建立:使用task_init() 建立新任務,您可以在其中傳遞要在新任務中執行的函數和參數。這些任務被賦予新的上下文和堆疊,並且任務 ID 被更新。
上下文切換:task_switch() 函數可讓您在任務之間切換,將目前上下文交換為指定任務的上下文。
任務終止:任務可以透過task_exit()終止其執行並返回主上下文。
以上是日-任務管理(作業系統)的詳細內容。更多資訊請關注PHP中文網其他相關文章!