我們前天講到了需要加入多執行緒來緩解介面卡死的現象,那現在就讓我來給大家介紹乙個由的某位大牛寫的執行緒池。(實在是忘了是誰了、、)
執行緒池的**奉上:
1view codesealed
class
mythreadpool224
///25
///設定最小工作執行緒數
26///
27///
數量28
public
static
void setminworkthreadcount(int
minthreadcount)
2933
///34
///啟動執行緒池工作
35///
36///
任務陣列
37public
static
void myqueueuserworkitem(listthreadstartarray)
3844
///45
///將單一任務加入佇列中
46///
47///
單一任務物件
48private
static
void
addthreadtoqueue(threadstart ts)
4954}55
56///
57///
將多個任務加入到執行緒池的任務佇列中
58///
59///
多個任務
60private
static
void addallthreadstopool(listthreadstartarray)
6165
66///
67///
執行任務,判斷佇列中的任務數量是否大於0,如果是則判斷當前正在使用的工作執行緒的
68///
數量是否大於等於允許的最大工作執行緒數,如果一旦有執行緒空閒的話
69///
就會執行excutetaskinqueen方法處理任務
70///
71private
static
void
excutetask()
7280}81
}8283///
84///
執行出對列的任務,加鎖保護
85///
86private
static
void
excutetaskinqueen()
8793}94
95///
96///
實現細節,這裡使用backgroudwork來實現後台執行緒
97///
註冊dowork和completed事件,當執行乙個任務前,前將任務加入到
98///
工作任務集合(表示工作執行緒少了乙個空閒),一旦runworkercompleted事件被觸發則將任務從工作
99///
任務集合中移除(表示工作執行緒也空閒了乙個)
100///
101///
102private
static
void
excutetaskbythread(threadstart threadstart)
103;
107 worker.runworkercompleted += (o, e) =>;
108worker.runworkerasync();
109}
110 }
然後呢再奉上有所修改的和新增的方法的**:
1view codepublic listgetresult(string
html)
2));18}
19 mythreadpool.setmaxworkthreadcount(5);//
設定每次從執行緒池中啟動10個執行緒
20 mythreadpool.myqueueuserworkitem(startarray);//
啟動執行緒池21}
22return
results;
23 }
1view codeprivate
void cnblogs(object
obj)218
results.add(result);
19if (getresults != null)20
23 }
1view codestruct
chuancanshu
2
在這裡呢,我把
listresults = new list();這段這個提取出來當作公共變數了。
正規表示式隨筆
所謂正規表示式其實就是用一串模版字串去匹配目標字串。1.新增引用using system.text.regularexpressions 如下 textbox txt new textbox txt.textchanged sender,e if regex.ismatch txt.text,150...
正規表示式隨筆
匹配任何單個字元。例如正規表示式 b.g 能匹配如下字串 big bug b g 但是不匹配 buug b.g 可以匹配 buug 匹配括號中的任何乙個字元。例如正規表示式 b aui g 匹配bug big和bag,但是不匹配beg baug。可以在括號中使用連字元 來指定字元的區間來簡化表示,例...
PHP 正規表示式隨筆
正規表示式 正則用來查詢指定的字串 匹配 替換指定的字串 1 什麼是正規表示式 正規表示式是一組描述字串特徵的模式,用於匹配一組字串。這種模式本身也是字串只不過有一些規則和語法。2 正規表示式用來解決字串的搜尋 替換 分隔 3 在php中學習正規表示式學習什麼?正規表示式的寫法。正規表示式的處理函式...