昨天找到一套多執行緒任務排程的**,相當的不錯,先把思路總結一下。
首先需要有乙個任務管理器來管理所有的任務,任務管理器提供新增新任務的介面。
然後需要有乙個執行緒池管理器管理所有的執行緒,執行緒分三種狀態:建立、執行、空閒三種狀態,執行緒可以執行任務task。
主流程通過乙個taskmonitorthread 的任務排程執行緒來排程任務,方法就是每次從任務佇列中獲取乙個任務,然後再從執行緒池中取乙個執行緒來執行。
另外還有乙個tasktimeoutthread 的任務超時監控執行緒來監控任務是否超時,這個需要乙個儲存執行時間的類來支撐。
乙個執行緒在開始執行時會觸發開始執行的事件,在結束時會觸發執行結束的事件,這些事件會將執行緒重新調整為空閒狀態,扔回執行緒池。
學習的**是:
多執行緒學習 任務,程序,執行緒
多個任務都在做,其實本質上我們的大腦在同一時間依舊只做了一件事情。程式是指令和資料的有序集合,其本身沒有任何執行的含義,是乙個靜態的概念。通常在乙個程序中可以包含若干個執行緒,當然乙個程序至少有乙個執行緒,不然沒有存在的意義。執行緒是cpu排程和執行的單位。執行緒就是獨立的執行路徑 在程式執行時,即...
linux多執行緒學習設定執行緒排程許可權
pthread setschedparam 設定執行緒的許可權 int pthread setschedparam pthread t target thread,int policy,const struct sched param param 引數 1.target thread是使用 pthr...
Java多執行緒 執行緒排程Join
public final void join throws interruptedexception 等待該執行緒終止。public final void join long millis throws interruptedexception 等待該執行緒終止的時間最長為 millis 毫秒。超時...