天天看點

多線程系列一

線程,程序,關系我不就不在BB了。

關于線程,其實我相信大家都了解了很多,此處我隻是發表我對線程的了解和認識,不喜勿噴。如有不對之處還請大家指出。

<a></a>

上述代碼大家肯定都不陌生~!

 接下來我們修改一下程式,完成單線程處理任務。我們知道很多時候,當我們的程式設計,又多個用戶端或者稱多個請求來源,并發請求來了以後,我們需要按照隊列處理事情比如秒殺下單

通過add實作并發下單 RunTest() 方法來實作處理邏輯,

此處通過 ManualResetEvent 實作對線程的挂起和喚醒操作。當隊列為空的時候,線程自動進入挂起狀态,當有新的任務,add操作的時候直接喚醒挂起的線程。立即進入處理狀态。

為什麼選用 ManualResetEvent 這個線程通知這裡就不在解釋了有興趣的可以自己百度~!

為了避免在需要關閉伺服器的時候調用線程的Thread.Abort() 導緻後續隊列操作失效,是以加入了isRuning的bool變量實作線程是否繼續運作。

多線程系列一

上述功能僅僅是永遠類似于處理下單,需要單線程隊列處理情況。各位看官請自行分析需求~~!

有了上述單線程處理隊列需求,我們也許會想到那麼在程式運作中自然有多線程處理隊列。

比如我們記錄日志的情況,(打個比方而已如果你很喜歡log4Net or log4J 請繞道)  我們需要送出日志記錄,但是不想這個操作耽誤程式的正常運作,且想日志這樣的記錄程式肯定不能單一線程處理,

如果日志瘋狂記錄,那麼勢必會導緻處理不及時記憶體暴漲溢出問題

于是再次修改一下程式

輸出

多線程系列一

多個線程實作了對日志記錄處理,并且在空閑時間實作線程暫停,有任務喚醒,以保證,不浪費資源同時能即時處理~!

由于第一次寫部落格,語言組織能力差,大家就看看程式代碼和注釋吧!

大家多多指教。

http://www.cnblogs.com/ty408/p/4326195.html