5天不再懼怕多執行緒 第一天 嘗試Thread

2021-09-09 01:56:29 字數 2428 閱讀 2440

原本準備在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 test

2 16

17 static void run()

18 延遲執行:ms", i, watch.elapsedmilliseconds);

30 }

31 catch (threadinterruptedexception e)

32 延遲執行:ms,不過丟擲異常", i, watch.elapsedmilliseconds);

abort:   工作執行緒直接退出,不帶走一片雲彩。

1 namespace test

2 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中提...