2
Supose我有幾個線程和委託運行的方法。多線程和委託調用
public delegate void Del(string threadId, string value, ref string result);
public event Del Analyze= null; // The external world can plug in a method
// this method runs simultanioulsy in several threads
private void threaded()
{
string s= null;
// yadayada s gets a value and I want a result back
// from the external world
string result = null;
is (Analyze != null)
Analyze("some thread id", s, ref result);
}
我知道,作爲事件的方法必須按順序同步線程安全的,等等,但會發生什麼,如果
Analyze("some thread id", s, ref result);
被稱爲在同一時間?這可以嗎?或者我需要同步分析,如:
lock(someobj)
{
Analyze("some thread id", s, ref result);
}
所以,問題更像是:是一個「事件」這樣的線程的視圖調用類的點(我知道我必須保證線程安全安全在方法的插入式)
是的,在使用多線程共享的資源時,您應該始終進行同步。 –
@ rory.ap這肯定取決於「Analyze(...)'是否修改狀態? –
@ScottPerham我希望它能做到,否則在參數'ref'中沒有意義。 – itsme86