C 執行緒同步之Moitor實現執行緒的順序執行

2022-03-26 02:27:55 字數 1134 閱讀 8174

有這麼個場景,a執行緒執行a函式,b執行緒執行b函式,c執行緒執行c函式,並且abc函式要按順序執行,如何實現

我們可以利用monitor和concurrentdictionary來實現。

monitor是比lock更靈活操作,再.net中,lock在中間語言會被翻譯成monitor;

concurrentdictionary是執行緒安全的字典。

實現乙個類:

///

///順序執行緒 執行緒按執行順序

/// public

class

orderedthread

#endregion

#region 開始執行執行緒

//////開始執行執行緒

/// public

void

start()

);thread th = new thread(() =>

monitor.exit(_objlock);

}});

th.setapartmentstate(apartmentstate.sta);

th.isbackground = true

; th.start();

}#endregion

}

我們的業務類:

public

class

printclass

public

void

printtwo()

public

void

printthree()

}

呼叫:

class

program

);orderedthread secondthread = new orderedthread((o) =>);

orderedthread thirdthread = new orderedthread((o) =>);

firstthread.start();

thirdthread.start();

secondthread.start();

console.readline();

}}

其中:start的順序就是要執行的順序。

c 實現多執行緒同步

執行緒同步是指同一程序中的多個執行緒互相協調工作從而達到一致性。之所以需要執行緒同步,是因為多個執行緒同時對乙個資料物件進行修改操作時,可能會對資料造成破壞,下面是多個執行緒同時修改同一資料造成破壞的例子 1 include 2 include 3 4void fun 1 unsigned int ...

C 執行緒同步

volatile是最簡單的一種同步方法,當然簡單是要付出代價的。它只能在變數一級做同步,volatile的含義就是告訴處理器,不要將我放入工作記憶體,請直接在主存操作我。www.bitscn.com 因此,當多執行緒同時訪問該變數時,都將直接操作主存,從本質上做到了變數共享。能夠被標識為volati...

c 執行緒同步

以乙個程式來說明執行緒不同步所帶來的問題 class program private int counter 0 private void actionmethod t thread.currentthread.name,counter 結果如下 從上面的結果中可以看到主線程和子執行緒都在爭奪act...