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