剛剛到新公司發現很多同學在用autoresetevent作執行緒同步,有的人用autoresetevent代替了c#的lock,
publicvoid
func2()
這種寫法我還是真是第一次見到。所以不是很確定,結果我研究了一下果然杯具了,重入後直接死鎖了。
示例:
classprogram
autoresetevent autoresetevent = new autoresetevent(true
);public
void
func1()
public
void
func2()
}
正確的寫法還是用lock或者直接monitor(try-finally暫時省略),看來這周需要花大功夫整改了。
privatereadonly
object lockobj = new
object
();
public
void
func3()
public
void
func4()
c 開發應避免的幾個小濫用
一 string和stringbuilder 少量的字串操作不宜採用stringbuilder。由於string是不可變得物件,對於string的疊加,每次操作都會生成乙個新的string物件。所以針對大量string的操作時,我們會採用stringbuilde。但似乎很多人都知道這一點,所以只要字...
C 中的執行緒同步 Join方法的使用例項
最近需要解決乙個多執行緒問題,將這個問題抽象說來就是這個情況。有a b兩個方法同時完成f工作,a b操作均比較耗時,且 b操作需要a操作完成後才能執行。現 要 a 和b同時執行n個執行緒。用數學化的語言描述一下 現有執行緒 a1,a2 ai ak 執行緒b1,b2,b3 bi bk ai和bi需要順...
C 同步和非同步呼叫方法例項
複製 如下 namespace consoletest wmlguijd console.writeline 完畢!consol程式設計客棧e.readline wmlguijd 同步方法 程式設計客棧param name a static int add int a,int b nbswww.cp...