經驗 C 手動同步的濫用例項

2022-03-01 07:33:10 字數 638 閱讀 8232

剛剛到新公司發現很多同學在用autoresetevent作執行緒同步,有的人用autoresetevent代替了c#的lock,

public

void

func2()

這種寫法我還是真是第一次見到。所以不是很確定,結果我研究了一下果然杯具了,重入後直接死鎖了。

示例:

class

program

autoresetevent autoresetevent = new autoresetevent(true

);public

void

func1()

public

void

func2()

}

正確的寫法還是用lock或者直接monitor(try-finally暫時省略),看來這周需要花大功夫整改了。

private

readonly

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...