乙個簡易的 輕量級的方法並行執行執行緒輔助類

2022-03-01 21:07:50 字數 1867 閱讀 2523

在實際應用中,經常要讓多個方法並行執行以節約執行時間,執行緒就是必不可少的了,而多執行緒的管理經常又是一件頭疼的事情,比如方法並行執行非同步的返回問題,方法並行執行的超時問題等等,因此這裡分享乙個簡易的、輕量級的方法並行執行執行緒輔助類。

執行緒管理輔助類的兩個目標:

1、多個執行緒方法並行執行,主線程等待,需要知道所有子執行緒執行完畢;

2、非同步執行方法需要設定超時時間,超時可以跳過該方法,主線程直接返回;

3、輕量級,雖然微軟提供了執行緒等待、超時等可用元件,如manualresetevent,但那是核心物件,占用系統資源較多。

設計實現:

1、該類內部維護兩個變數,非同步執行方法匯流排程數totalthreadcount,當前執行完畢執行緒資料currthreadcount;

2、兩個開放方法,waitall等待執行,setone設定方法執行結束,每乙個方法執行完畢呼叫setone,currthreadcount數量加1,同時waitall判斷currthreadcount與totalthreadcount是否相等,相等即表示所有方法執行完畢,返回;

3、為了實現執行緒安全,currthreadcount的變數處理使用interlocked。

**實現:

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading;67

namespace

loncin.codegroup10.utility830

31///

32///

等待所有執行緒執行完畢

33///

34///

超時時間(毫秒)

35public

void waitall(int overminiseconds = 0)36

49}5051 checkcount++;

5253 thread.sleep(1

);54}55

}5657///

58///

設定訊號量,表示單執行緒執行完畢

59///

60public

void

setone()

6164

}65 }

view code

使用示例:

1

public

class

threadhelpertest220

21//

等待方法執行,超時時間12ms,12ms後強制結束

22 threadhelper.waitall(12

);23

24 console.writeline("

所有方法執行完畢!");

25}2627

private

void testfunc(int

i)28

執行!"

);32 thread.sleep(10

);33}34

finally

3539

}40 }

view code

總結:

1、該執行緒幫助類只是乙個簡易的執行緒管理類,還缺少很多功能,比如異常處理等,不過一般的情況下還是比較使用的。

peewee 乙個輕量級的ORM 四

class database last insert id cursor,model parameters return type 最後乙個插入的記錄的那行的主鍵,不一定非得叫 id rows affected cursor return type 受影響的行數 create table model...

DI php寫乙個輕量級的容器

摘要 理解什麼是di ioc,依賴注入 控制反轉。兩者說的是乙個東西,是當下流行的一種設計模式。大致的意思就是,準備乙個盒子 容器 事先將專案中可能用到的類扔進去,在專案中直接從容器中拿,也就是避免了直接在專案中到處new,造成大量耦合。取而代之的是在專案類裡面增設 setdi 和getdi 方法,...

乙個輕量級AOP的實現(開源)

事先宣告,本專案參考aop in c 和園內大神張逸的文章,思路神馬的都不是自己的!為了讓專案的 看起來更乾淨,需要乙個aop!於是就實現了乙個非常簡單的,非常輕量級,有多輕量級呢?實現的aop叫做earthworm 蚯蚓,為什麼叫這個?因為它小,它會疏通!專案的本意也是這樣,所以就叫這個!命名空間...