我想解決這個問題。我有WCF服務。客戶端可以從該服務調用Web方法,該方法僅在另一個線程中「激發」另一種方法(此方法僅將數據寫入數據庫)。WCF中的多線程
代碼是在這裏:
//this method will write data to database
public void WriteToDb()
{
}
//this web method will call only mehod WriteToDb() in another thread
public void SomeWebMethod()
{
new Task(WriteToDb).Start();
}
問題是,在同一時間可以通過Web方法調用5個客戶端。這導致該方法WriteToDb在5個線程中被調用5次。
在所有5種情況下,方法WriteToDb將使用相同的數據。
我的目標是實現這種行爲。 5個客戶端稱爲Web方法SomeWebMethod。方法WriteToDb將在5個線程中運行。
但我想執行第一個線程,然後第二個線程....等,並在第五個線程結束。
我不想在5個線程中同時運行方法WriteToDb。
所以,也許我可以使用鎖定。
{
private object locker = new object();
//this method will write data to database
public void WriteToDb()
{
lock(locker)
{
//write to DB
}
}
我不確定,因爲.net程序集是應用程序域上的主機,應用程序域是主機上的win程序。我想避免僵局。
如果我有6 CPU的機器會發生什麼?使用互斥鎖而不是鎖定?
感謝您的幫助...
非常感謝你 – arva 2012-02-23 06:58:36