System.Collections.Generic.Queue<T>(消息隊列):
MSDN定義爲:先進先出的集合,允許null值,並且可以重複,值可以爲引用類型。其默認的容量爲32,默認的增長因子爲2.0.
可以使用Enqueue() 方法將對象添加到Queue的結尾處.
使用Dequeue() 方法將開始處的對象移除並返回該對象。
注意:多個線程同時給Queue添加或移除對象時,請使用lock線程鎖,防止併發。
消息隊列,就是給任務發了一連串的郵件,官員(任務)拿到這一大摞文件,可以從底部或者頂部(LIFO or FIFO)一個一個拆開處理。
System.Threading.Semaphore(信號量):
MSDN定義爲:限制可同時訪問某一資源或資源池的線程數。
使用 Semaphore 類可控制對資源池的訪問。
線程通過調用 WaitOne 方法(從 WaitHandle 類繼承)進入信號量,並通過調用 Release 方法釋放信號量。
信號量就是中央政府發給官人做一方大員的官印,有很多種官印但是不能一印多發,得到官印者才能掌權魚肉一方百姓(任務得到信號量才能運行),否則你就只要等官跑官。