[英]understanding Locking help?
我正在創建一個處理數千個請求的ASP.net網站,這一切都源於他們共享的一個主要對象來閱讀它。 我試圖繞過這些不同類型的鎖。
我對每個人都有一些常見問題。
1。
public class MyClass
{
lock
{
// DO COOL CODE STUFF.
}
}
2。
public class MyClass
{
Application.Lock
// DO COOL CODE STUFF.
Application.Unlock
}
3。
public static object lockObject = new object();
public class MyClass
{
lock(lockObject)
{
// DO COOL CODE STUFF.
}
}
4。
private static readonly ReaderWriterLockSlim slimLock = new ReaderWriterLockSlim();
public class MyClass
{
slimLock.EnterWriteLock();
// DO COOL CODE STUFF HERE.
slimLock.ExitWriteLock();
}
閱讀所有這些內容的文檔:
1)
Application.Lock() and Application.Unlock()
Lock方法阻止其他客戶端修改存儲在Application對象引用中的變量
2)你不能這樣做:
public class MyClass
{
lock
{
// DO COOL CODE STUFF.
}
}
3)如果您可以同時讀取多個客戶端,則應使用ReaderWriterLockSlim,但寫訪問必須具有獨占訪問權限。
4)這段代碼:
public static object lockObject = new object();
public class MyClass
{
lock(lockObject)
{
// DO COOL CODE STUFF.
}
}
將意味着一次只能有一個線程在該塊內。 意思是序列化的讀訪問。
鎖定單個對象不會很好地擴展。 作為替代方案,我建議考慮對象池設計模式。 它能夠越來越多地滿足您不斷增長的用戶需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.