元件設計系列 實現乙個支援非同步和延遲任務的執行緒

2021-10-10 22:19:43 字數 984 閱讀 4402

執行緒是乙個很簡單的,今天本文將實現一種支援非同步任務新增和延遲任務的執行緒類,開啟乙個執行緒後,可以往裡面持續新增非同步任務,任務序列執行,且執行順序與新增順序一致。支援新增延時任務。任務可以是業務方的任意函式(通過bind/function實現)。當然了,稍加改造,還可以支援定時任務的實現。同時,以本執行緒的實現為基礎,還可以實現後續的執行緒池。

首先,我們將使用到的命名空間進行封裝。

當前的執行緒類,當退出執行緒的時候,支援三種策略。其中,thread_release_all_job將放棄一切沒有執行的任務,退出執行緒執行。thread_release_schedule_job_done將定時任務沒有執行完的任務和到達超時的任務執行完再退出。thread_release_until_all_job_done,支援將所有延遲任務執行完成。

接下來我們再看看task_thread類的方法定義:

其中,建構函式提供了自定義執行緒名稱,預設的執行緒模式為thread_release_all_job,也就是執行緒退出時將不執行剩餘的任務了。

其中public 提供的方法,start_thread將啟動執行緒,啟動執行緒後將從run_in_thread函式入口進行執行。

測試用例通過main執行緒不斷的向task_thread執行緒中新增延遲任務,然後讓task_thread執行緒去序列執行。程式將每隔1秒種執行以下print函式,輸出"hello world!"。

實現乙個react系列二 渲染元件

在上一節jsx和虛擬dom中,我們了解了react中的jsx到虛擬dom,以及如何將虛擬dom渲染成真實的dom。在這一節中,我們將會了解react中元件是如何渲染的。在react中,元件有兩種使用方法 import react from react 類定義的元件 class hello exten...

如何實現乙個元件封裝

js前端元件的封裝方法 定義乙個類 類中增加乙個方法 body中定義乙個dom節點 指令碼中把dom節點和類定義結合起來 實現特定的元件功能 vue元件封裝 建立元件的模板,先把架子搭起來,寫寫樣式,考慮你的元件的基本邏輯 然後在引用得元件中 用import引入元件 通過component定義元件名...

Vue 實現乙個分頁元件

實現分頁元件要分三個部分 樣式,邏輯,和引用 首先新建乙個vue檔案用來承載元件內容 第一步 構建樣式 第二步 編寫邏輯 第三步 引用元件 1.在父元件中引入並註冊 components 2.在data下宣告三個變數 total 0,記錄總條數 display 10,每頁顯示條數 current 1...