在作業中,會遇到需要多執行緒處理相應的業務需求,最典型的包括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()方法的執行緒:此處改為了終止狀態,程式可以繼續運行了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62026.html
標籤:其他
