77家的会客2010

CFLOCK参考说明(上)
Weather:晴,北风4-5级,最低气温2 ℃

說明
提供兩種鎖定方式去確保分享資料的完整性.

  • 專用鎖定(Exclusive lock)
  • 唯讀鎖定(Read-only lock)

專用鎖定是對建立在這個tag內容中的CFML做單一執行緒存取(Single-thread Acess), 單一執行緒存取(Single-thread Acess)意思是指這個tag內容在同一時間最多執行一個請求. 在一個有"專用鎖定"的<CFLOCK>內執行一個請求. 當一個請求有專用鎖定時, 在這個tag內就沒有其他請求可以開始執行. ColdFusion分配專案鎖定是依據”先來先服務”的原則.
一個唯讀鎖定允許對建立在這個tag內容中的CFML同時存取多個請求. 因此, 唯讀鎖定應該只用在當分享資料是唯讀及不用修改的時候, 如果另一個請求在分享資料上已經有一個專用鎖定, 這個請求必須等到專用鎖定被釋放後才能執行.

分類
  網頁應用程式架構
語法
<CFLOCK Timeout = "timeout in seconds "
Scope = "Application" or "Server" or "Session"
Name = "lockname"
ThrowOnTimeout = "Yes" or "No"
Type = "readOnly/Exclusive ">
<!--- 要同步化的CFML --->
</CFLOCK>

屬性

属性 说明
Timeout 必要屬性. 指定要等待去取得一個鎖定的最大量時間, 以秒為單位. 如果一個鎖定能在指定的時段內被取得, 則在這個tag內容內繼續執行, 否則視ThrowOnTimeout屬性值而反應.
Scope 選擇屬性. 指定下其中一個範圍: Application, Server, 或Session. 這個屬性與Name屬性是互相排斥的
Name 選擇屬性. 指定鎖定的名稱. 在一個給定名稱的<CFLOCK>內只能執行一個請求. 因此, 提供Name屬性允許對來自一應用程式不同部份的資源做同步存取. 鎖定名稱對ColdFusion Server而言是全域的. 它們在Applications及使用者Sessions之間是分享的, 但不能跨越叢集伺服器(Cluster Servers). 這個屬性與Scope屬性是互相排斥的. 因此, 不要在一個tag內同時指定Scope屬性及Name屬性. Name屬性的屬性值不能是一個空字串.
ThrowOnTimeout 選擇屬性. Yes或No. 指定逾時條件如何處理. 若這個值為Yes, 會產生一個例外去提供逾時通告. 如果這個值為No, 繼續執行通過</CFLOCK>. 預設值為Yes.
Type 選擇屬性. ReadOnly或Exclusive. 指定鎖定的方式:唯讀(Read-only)或專用(Exclusive). 預設值為Exclusive. 一個唯讀鎖定允許超過一個請求去讀取分享資料. 一個專用鎖定允許只有一個請求取讀取或寫入分享資料

注意
限制修改分享資料的程式碼的範圍. 要去確保這些修改的完整性需要專用鎖定, 但對它們的執行效能有重大影響. 唯讀鎖定較快. 如果您的應用程式對執行效能教在意的話, 僅可能以唯讀鎖定取代專用鎖定; 例如, 當正在讀取分享資料的時候

[CFLOCK参考说明(上)]的回复

Post a Comment~