也許這個問題聽起來很愚蠢,但我不明白'關於線程和鎖定的事情,我想獲得確認(here's why I ask)。將lock()語句阻塞進程/ appdomain中的所有線程?
因此,如果我在同一時間有10個服務器和10個請求來到每個服務器,那麼整個服務器場的請求就是100個。沒有鎖定,那100請求到數據庫。
如果我做這樣的事情:
private static readonly object myLockHolder = new object();
if (Cache[key] == null)
{
lock(myLockHolder)
{
if (Cache[key] == null)
{
Cache[key] = LengthyDatabaseCall();
}
}
}
多少數據庫請求我會做什麼? 10? 100?或者像我有線程一樣多?
謝謝大家的出色解釋,我測試過它,它的工作原理與你所有的建議 - 10分貝的請求。 – MikeJ 2010-06-09 10:40:08