Thread

NAME

執行緒 - 可執行 / 運算實體

概要

待辦事項

說明

執行緒物件是代表時間共用 CPU 執行情境的建構項目。執行緒物件與特定 Process 物件相關聯,可為 I/O 和運算作業所需的其他物件提供記憶體和控制代碼。

Lifetime

執行緒是透過呼叫 zx_thread_create() 建立,但只有在呼叫 zx_thread_start()zx_process_start() 時才會開始執行。這兩個系統呼叫都會做為引數,做為執行初始處理常式的進入點。

傳遞至 zx_process_start() 的執行緒應為在程序上開始執行的第一個執行緒。

執行緒會終止執行:+ 呼叫 zx_thread_exit() + 方法是呼叫 zx_vmar_unmap_handle_close_thread_exit() + 方法是呼叫 zx_futex_wake_handle_close_thread_exit() +,方法是在產生沒有任何處理常式的例外狀況之後,透過執行緒的控點來呼叫 zx_task_kill(),以呼叫 zx_task_kill() 來終止執行緒。

從進入點處理常式傳回不會終止執行作業。進入點的最後一個動作應呼叫 zx_thread_exit() 或上述任一 _exit() 變體。

關閉執行緒的最後一個控制代碼不會終止執行。如要強制終止沒有可用的控制代碼的執行緒,請使用 zx_object_get_child() 取得執行緒的控制代碼。強烈建議不要採用這個方法。終止執行中的執行緒可能會使程序處於損毀狀態。

Fuchsia 原生執行緒一律會卸離。也就是說,不需要使用 join() 作業進行乾淨終止。然而,核心上方的某些執行階段 (例如 C11 或 POSIX) 可能需要彙整執行緒。

訊號

討論串提供以下信號: + ZX_THREAD_TERMINATED + ZX_THREAD_SUSPENDED + ZX_THREAD_RUNNING

斷言執行緒啟動時,ZX_THREAD_RUNNING。當暫停時,ZX_THREAD_RUNNING 會斷言,ZX_THREAD_SUSPENDED 會斷言。當執行緒繼續時,ZX_THREAD_SUSPENDED 就宣告終止,ZX_THREAD_RUNNING 進行斷言。當執行緒終止 ZX_THREAD_RUNNINGZX_THREAD_SUSPENDED 時,系統會宣告 ZX_THREAD_TERMINATED 和宣告。

請注意,信號會 (或) 進入 zx_object_wait_*() 函式系列維護的狀態,因此傳回時,畫面可能會顯示任何要求的信號組合。

音效