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

2021-06-26 15:04:45 字數 3448 閱讀 7080

**:

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

17static

void run()

18 延遲執行:ms

", i, watch.elapsedmilliseconds);

30 }

31catch (threadinterruptedexception e)

32 延遲執行:ms,不過丟擲異常

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

1

namespace test

2 18

19static

void run()

20 延遲執行:ms

", i, watch.elapsedmilliseconds);

32 }

33catch (threadabortexception e)

34 延遲執行:ms,不過丟擲異常

二:執行緒使用場景

可能執行緒的使用有點類似wcf,做一些耗時但不很及時的需求,比如可以開執行緒下,連線資料庫等等,當然執行緒可以用來做負載,這裡就做

看了下**主體上有4個tab頁,那麼我們就開4個執行緒來負載

1

class 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列表

三:對執行緒的一些思考

我們知道執行緒的優點還是比較多的,每個執行緒都需要預設的堆疊空間,所以說執行緒數受到記憶體空間大小的限制,如果執行緒數開的太多

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

5天不再懼怕多執行緒 第一天 嘗試thread 原本準備在mongodb之後寫乙個lucene.net系列,不過這幾天用到多執行緒時才發現自己對多執行緒的了解少之又少,僅僅停留在lock上面,好了,我們知道 負載 是乙個很時尚,很牛x的玩意,往大處說,需要負載,資料庫需要負載。往小處說,執行緒也需要...

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

原本準備在mongodb之後寫乙個lucene.net系列,不過這幾天用到多執行緒時才發現自己對多執行緒的了解少之又少,僅僅停留在lock上面,好了,我們知道 負載 是乙個很時尚,很牛x的玩意,往大處說,需要負載,資料庫需要負載。往小處說,執行緒也需要負載,面對海量的 使用者請求,我們的單執行緒肯定...

5天不再懼怕多執行緒 第三天 互斥體

沒想到我的前兩篇文章還挺受歡迎的,謝謝大家,今天整理下mutex的使用。一 mutex 首先看下msdn對它的解釋 不錯,出現了乙個亮點,可用於 程序間同步 既然程序間都可以同步,那執行緒同步對它來說不是小菜一碟嗎?好的,還是看下mutex在 執行緒中發揮的神奇功效。1 執行緒間同步 metux中提...