【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>
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>