在實際應用中,經常要讓多個方法並行執行以節約執行時間,執行緒就是必不可少的了,而多執行緒的管理經常又是一件頭疼的事情,比如方法並行執行非同步的返回問題,方法並行執行的超時問題等等,因此這裡分享乙個簡易的、輕量級的方法並行執行執行緒輔助類。
執行緒管理輔助類的兩個目標:
1、多個執行緒方法並行執行,主線程等待,需要知道所有子執行緒執行完畢;
2、非同步執行方法需要設定超時時間,超時可以跳過該方法,主線程直接返回;
3、輕量級,雖然微軟提供了執行緒等待、超時等可用元件,如manualresetevent,但那是核心物件,占用系統資源較多。
設計實現:
1、該類內部維護兩個變數,非同步執行方法匯流排程數totalthreadcount,當前執行完畢執行緒資料currthreadcount;
2、兩個開放方法,waitall等待執行,setone設定方法執行結束,每乙個方法執行完畢呼叫setone,currthreadcount數量加1,同時waitall判斷currthreadcount與totalthreadcount是否相等,相等即表示所有方法執行完畢,返回;
3、為了實現執行緒安全,currthreadcount的變數處理使用interlocked。
**實現:
1view codeusing
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 }
使用示例:
1view codepublic
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 }
總結:
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 蚯蚓,為什麼叫這個?因為它小,它會疏通!專案的本意也是這樣,所以就叫這個!命名空間...