代码改变世界

【ColdFusion】用CFLOCK进行排斥性锁定

2010-05-12 11:07  Peter Jin  阅读(397)  评论(0编辑  收藏  举报

CFLOCK标签用来对一段代码进行锁定。括在此标签内的代码在同一时间只能被一个请求来执行。执行CFLOCK代码块的请求对该段代码进行排斥性锁定,因此当一个请求正在执行CFLOCK代码块时,不允许其它的请求执行该段代码。ColdFusion按照“先来先服务”的原则进行排斥性锁定。

将修改共享数据的代码括在CFLOCK标签中,可以确保不会有两个用户同时修改数据。通常,更新应用程序范围的变量,如Server变量,Application变量,Session变量时,应该使用CFLOCK标签。如下例所示:

 1 <HTML>
 2 
 3 <HEAD>CFLOCK Example</HEAD>
 4 
 5 <BODY>
 6 
 7 <H3>CFLOCK Example</H1>
 8 
 9 <CFLOCK NAME="ApplicationData" TIMEOUT = 30>
10 
11   <CFIF NOT IsDefined("Application.IsApplicationDataInitialized")>
12 
13       <CFSET Application.IsApplicationDataInitialized = TRUE>
14 
15       <CFSET Application.ImportantValue = 5>
16 
17   </CFIF>
18 
19 </CFLOCK>
20 
21 <CFOUTPUT>
22 
23 Important value is #Application.ImportantValue#
24 
25 </CFOUTPUT>
26 
27 </BODY>
28 
29 </HTML>