執行緒池的簡單實用

2022-01-26 03:15:51 字數 962 閱讀 2056

c# 執行緒池threadpool的用法:

最近,因為做專案的關係,用到了很多和執行緒有關的東西。由於以前對執行緒只是有乙個概括的了解,並沒有深入的研究過,所以在面對一些問題時,總會感覺到有心無力,為此也花費了大量的時間和精力。為了鞏固這方面的知識,特寫此文章和大家分享。

1 最簡單的執行緒例子

class program

static void threadinvoke()}}

輸出結果:

"end in main"並沒有在threadinvoke()方法中所有**執行完之後才輸出。

由此可見main方法和threadinvoke是並行執行的。

2 使用執行緒池

上面介紹了只是乙個最簡單的有關執行緒執行緒的例子,但在實際開發中使用的執行緒往往是大量的和更為複雜的,這時,每次都建立執行緒、啟動執行緒。從效能上來講,這樣做並不理想(因為每使用乙個執行緒就要建立乙個,需要占用系統開銷);從操作上來講,每次都要啟動,比較麻煩。為此引入的執行緒池的概念。

有關執行緒池的解釋請參考:

把上面的**修改之後如下:

class program

static void threadinvoke(object param)}}

輸出結果:

上面的**把執行緒的建立和啟動改為了threadpool.queueuserworkitem(newwaitcallback(threadinvoke)),方法threadinvoke加了個引數(object param),並在main結束之間加了thread.sleep(3000);thread.sleep(3000)這句話是必須的因為當main方法結束後,.net環境會自動結束銷毀執行緒池,為了保證完成執行緒池裡的任務,所以主線程需要等待一段時間。 

由輸出結果可知,main方法和threadinvoke方法是並行執行的。 

簡單的執行緒池

開始看執行緒池感覺十分懵逼,什麼任務,任務對列,不知道是什麼東西。但是在網上找了一篇注釋詳細一點的 仔細看看一遍,就慢慢清楚他大概是個什麼,大概是怎麼實現的。一邊看一遍加注釋,會幫助你理解。下面是我當時參考的一篇部落格,有乙個執行緒池 比較簡單清晰。include include include 鎖...

簡單的執行緒池

執行緒池就是執行緒的一種使用模式。雖然執行緒是輕量級的程序,但是執行緒的建立和銷毀還是會引發效率問題。並且,如果建立的執行緒過多,反而會增加很多的排程開銷,影響系統效率。執行緒池就是可以提前建立好一些執行緒,在我們需要使用執行緒的時候,對已經建立好的執行緒新增任務就好。這裡我寫的這個執行緒池的原理如...

python 執行緒池實用總結

執行緒池的兩張方法 submit 和map from concurrent.futures import threadpoolexecutor import time def sayhello a time.sleep 2 return hello adef main seed a b c 不使用執...