內容同第一棟樓http://https://bbs.csdn.net/topics/399031782?page=1#post-414118971
uj5u.com熱心網友回復:
參考第 1 棟樓 2 層 xiaoyin35 的回復:然后是ThreadPool類的:
ThreadPool tp1; //創建執行緒池
ThreadPool tp2(5); //創建執行緒池并創建5個執行緒
tp1.CreateThread(n); //新添n個執行緒在執行緒(默認引數=1)
還有:
###
就是使用執行緒:
tp1.GetThread(n); //隨便找n個執行緒執行任務佇列中的n個任務(默認引數=1),如果n比任務數多,則剩余的執行緒閑置。每運行一個洗掉1個任務(tp1.TaskQueue.pop())
tp1.TaskQueue //tp1的任務佇列(普通queue,例如定義一個class Task;讓后用queue<Task> TaskQueue;//public實作。)
tp1.TaskQueue.push(*(new Task(command, args))); //添加1個任務,函式為command,引數args
tp1.TaskQueue.pop();//可以洗掉這個功能(沒法直接訪問(protected),但是可以把這個Queue類安插在ThreadPool里,讓ThreadPool可以使用pop()。)
tp1.TaskQueue.size();//長度,可以設定函式:tp1.GetTaskNumber()屏蔽。
uj5u.com熱心網友回復:
第一棟樓的網址有一個錯誤!執行緒池的方法:
GetThread會自動啟動這n個執行緒
tp1.AllWait(); //等待現在正在運行的執行緒結束
tp1.sleep()....就不多說,但是引數是:(index, ...) index指是哪個執行緒,每個執行緒在執行緒池會標號,GetThread時會回傳他們的標號!
具體Queue我實作了一些了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254133.html
標籤:C++ 語言
上一篇:C++ 實作執行緒類和執行緒池類
下一篇:vscode多檔案編譯
