C ThreadPool 執行緒池的詳解及使用範例

2021-10-21 11:01:48 字數 1479 閱讀 5257

此文章是根據烏班圖ysm的部落格修改的,並加入了自己的一些見解

執行緒和執行緒池都是進行多執行緒操作的,執行緒池是用來儲存執行緒的乙個容器,在程式建立執行緒來執行任務的時候執行緒池才會初始化乙個執行緒,執行緒在執行完畢之後並不會被銷毀,而是被掛起等待下乙個任務的到來被啟用執行任務,當執行緒池裡的執行緒不夠用的時候會新例項化乙個執行緒,來執行,執行緒池裡的執行緒會被反覆利用。

//存放要計算的數值的字段

public static double num1=-1;

public static double num2=-1;

static void main(string args)

",maxthreadnum);

console.writeline("最小空閒執行緒數:",minthreadnum);

//函式變數值

int x=15600;

//啟動第乙個任務:計算x的8次方

console.writeline("啟動第乙個任務:計算的8次方.",x);

threadpool.queueuserworkitem(new waitcallback(taskproc1),x);

//啟動第二個任務

console.writeline("啟動第二個任務:計算的8次方",x);

threadpool.queueuserworkitem(new waitcallback(taskproc2),x);

//等待,直到兩個數值等完成計算

while(num1==-1||num2==-1);

//列印計算結果

console.writeline("y()=",x,num1+num2);

}private void taskproc2(object state)

private void taskproc1(object state)

2.退出執行緒池的執行

static void main(string args)

private void counts(cancellationtoken token,int countto)

); th.start();

}sw.stop();

console.writeline("執行建立執行緒所需要的時間"+sw.elapsedmilliseconds);

sw.restart();

for(int i=0;i<1000;i++))}

sw.stop();

}

4.執行緒池引數傳遞執行

static void main(stirng args)

internal calss userinfor

public string

}internal calss threaddemoclass

public void run2(object obj)

}

C ThreadPool 執行緒同步

接上篇文章,上面的文章利用threadpool實現了執行緒的自動執行,並最後反映在了ui執行緒上,但是兩個threadpool中的執行緒怎麼同步,就需要使用threadpool中的manualresetevent。msdn中manualresetevent解釋為 通知乙個或多個正在等待的執行緒已發生...

python 執行緒池 Python的執行緒池

usr bin env python coding utf 8 concurrent 用於執行緒池和程序池程式設計而且更加容易,在python3.2中才有。import sys from concurrent.futures import threadpoolexecutor,as complete...

執行緒 執行緒池

執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現 建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。乙個比較簡單的執行緒池至少應包含執行緒池管理器 工作執行緒 任務列隊 任務介面等部分。其中執行緒池管理器的作用是建立 銷毀並管理...