5天不再懼怕多執行緒——第一天 嘗試thread
原本準備在mongodb之後寫乙個lucene.net系列,不過這幾天用到多執行緒時才發現自己對多執行緒的了解少之又少,僅僅停留在lock上面,
好了,我們知道「負載」是乙個很時尚,很牛x的玩意,往大處說,**需要負載,資料庫需要負載。往小處說,執行緒也需要負載,面對海量的
使用者請求,我們的單執行緒肯定扛不住,那麼怎麼辦,一定要負載,所以說多執行緒是我們碼農必須要熟練掌握的一門技術。
在framework中給我們提供了乙個threading命名空間,下面是乙個msdn上不完整的截圖:
在後面的系列中我也是主要整理這幾個類的使用方法和應用場景。
一:thread的使用
我們知道這個類代表處理器執行緒,在thread中有幾個比較常用和重要的方法。
<1> sleep: 這個算是最簡單的了。
<2> join: 這個可以讓並發行處理變成序列化,什麼意思呢?上**說話最清楚。
1class test
2 15
16static
void run()
17
23 }
<3> interrupt和abort:這兩個關鍵字都是用來強制終止執行緒,不過兩者還是有區別的。
① interrupt: 丟擲的是 threadinterruptedexception 異常。
abort: 丟擲的是 threadabortexception 異常。
contine操作。
abort:這個就是相當於乙個break操作,工作執行緒徹底死掉。
interrupt:
1namespace test
2 16
17static
void run()
18 延遲執行:ms
", i, watch.elapsedmilliseconds);
30 }
31catch (threadinterruptedexception e)
32 延遲執行:ms,不過丟擲異常
", i, watch.elapsedmilliseconds);
34 }
35 }
36 }
37 }
38 }
abort: 工作執行緒直接退出,不帶走一片雲彩。
1namespace test
2 18
19static
void run()
20 延遲執行:ms
", i, watch.elapsedmilliseconds);
32 }
33catch (threadabortexception e)
34 延遲執行:ms,不過丟擲異常
", i, watch.elapsedmilliseconds);
36 }
37 }
38 }
39 }
40 }
二:執行緒使用場景
可能執行緒的使用有點類似wcf,做一些耗時但不很及時的需求,比如可以開執行緒下,連線資料庫等等,當然執行緒可以用來做負載,這裡就做
看了下**主體上有4個tab頁,那麼我們就開4個執行緒來負載
1class program
2 ;67
for (int url = 0; url < str.length; url++)
8
13 console.read();
14 }
1516
public
static
void download(object category)
17 ;
4950
var directoryname = directory[new random().next(0, directory.length)];
5152
if (!directory.exists(directoryname))
53 directory.createdirectory(directoryname);
5455
var filename = string.empty;
5657
if (list.count == 0)
58
6263
try64
87catch (exception e)
88
92 }
93catch (exception ex)
94
97 }
98 }
99 }
100101
///102
///取得html中所有的 url。
103///
104///
html**
105///
的url列表
106public
static list gethtmlimageurllist(string shtmltext)
107
121 }
三:對執行緒的一些思考
我們知道執行緒的優點還是比較多的,每個執行緒都需要預設的堆疊空間,所以說執行緒數受到記憶體空間大小的限制,如果執行緒數開的太多
5天不再懼怕多執行緒——第一天 嘗試thread
5天不再懼怕多執行緒 第一天 嘗試Thread
原本準備在mongodb之後寫乙個lucene.net系列,不過這幾天用到多執行緒時才發現自己對多執行緒的了解少之又少,僅僅停留在lock上面,好了,我們知道 負載 是乙個很時尚,很牛x的玩意,往大處說,需要負載,資料庫需要負載。往小處說,執行緒也需要負載,面對海量的 使用者請求,我們的單執行緒肯定...
5天不再懼怕多執行緒 第一天 嘗試Thread
原本準備在mongodb之後寫乙個lucene.net系列,不過這幾天用到多執行緒時才發現自己對多執行緒的了解少之又少,僅僅停留在lock上面,好了,我們知道 負載 是乙個很時尚,很牛x的玩意,往大處說,需要負載,資料庫需要負載。往小處說,執行緒也需要負載,面對海量的 使用者請求,我們的單執行緒肯定...
5天不再懼怕多執行緒 第三天 互斥體
沒想到我的前兩篇文章還挺受歡迎的,謝謝大家,今天整理下mutex的使用。一 mutex 首先看下msdn對它的解釋 不錯,出現了乙個亮點,可用於 程序間同步 既然程序間都可以同步,那執行緒同步對它來說不是小菜一碟嗎?好的,還是看下mutex在 執行緒中發揮的神奇功效。1 執行緒間同步 metux中提...