C# 多線程的阻塞和繼續-ManaulResetEvent的使用


在工作中,會遇到需要多線程處理相應的業務需求,最典型的包括Socket的通信。

多線程處理里,就會考慮到,哪個線程先運行,哪個線程后運行的情況。

這里我介紹一下,使用ManualResetEvent類來對線程進行阻塞和繼續操作。

它有三個重要的方法:Reset、Set和WaitOne。

1、首先介紹一下它的構造函數:

public ManualResetEvent (bool initialState);

參數 initialState,如果為 true,則將初始狀態設置為終止;如果為 false,則將初始狀態設置為非終止。

這是什么意思呢?它的意思是:如果為 false時,初始化ManaulResetEvent對象為非終止狀態,當有線程調用ManaulResetEvent的WaitOne()方法時,該線程將進入阻塞狀態。

如果改為true,則會初始化ManaulResetEvent對象為終止狀態,當有線程調用ManaulResetEvent的WaitOne()方法時,該線程可以繼續執行后面的操作。

2、Reset()方法

Reset方法,它會將ManualResetEvent的對象設置為非終止狀態,告訴調用ManaulResetEvent的WaitOne()方法的線程:此處將阻塞線程。

3、Set()方法

Set方法與Reset剛好相反,當有線程調用Set()方法時,它會告訴包含ManaulResetEvent的WaitOne()方法的線程:此處改為了終止狀態,程序可以繼續運行了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM