cflock
223
These examples show situations that cause deadlocks:
The following deadlock could occur if you tried to nest an exclusive lock inside a read lock:
The following code shows this scenario:
<cflock timeout = "60" scope = "SESSION" type = "readOnly">
...............
<cflock timeout = "60" scope = "SESSION" type = "Exclusive">
.........
</cflock>
</cflock>
To avoid a deadlock, everyone who nests locks must do so in a well-specified order and name the
locks consistently. If you must lock access to the Server, Application, and Session scopes, you must
do so in this order:
1
Lock the Session scope. In the
cflock
tag, specify
scope
= "
session"
.
2
Lock the Application scope. In the
cflock
tag, specify
scope = "Application"
.
3
Lock the Server scope. In the
cflock
tag, specify
scope
=
"server"
.
4
Unlock the Server scope.
5
Unlock the Application scope.
6
Unlock the Session scope.
Note:
If you do not have to lock a scope, you can skip any pair of these lock/unlock steps. For
example, if you do not have to lock the Server scope, you can skip Steps 3 and 4. Similar rules apply
for named locks.
For more information, see the following:
•
Chapter 15, “Using Persistent Data and Locking,”
in
Developing ColdFusion MX Applications
•
Article #20370,
ColdFusion Locking Best Practices,
on the Macromedia website at
www.macromedia.com/support/service/
Example
<!--- This example shows how cflock can guarantee consistency of data updates
to variables in the Application, Server, and Session scopes. --->
Example deadlock with two users
User 1
User 2
Locks the session scope.
Locks the Application scope.
Deadlock: Tries to lock the Application scope,
but it is already locked by User 2.
Deadlock: Tries to lock the Session scope, but it
is already locked by User 1.
Example deadlock with one user
User 1
Locks the Session scope with a read lock.
Attempts to lock the Session scope with an exclusive lock.
Deadlock: Cannot lock the Session scope with an exclusive lock because the scope is already
locked for reading.
Summary of Contents for COLDFUSION MX 61-CFML
Page 1: ...CFML Reference...
Page 16: ...16 Contents...
Page 32: ...32 Chapter 1 Reserved Words and Variables...
Page 160: ...160 Chapter 2 ColdFusion Tags html...
Page 245: ...cfmail 245 p input type Submit name form...
Page 299: ...cfreturn 299 cffunction cfcomponent...
Page 354: ...354 Chapter 2 ColdFusion Tags cfoutput cfcatch cftry...
Page 357: ...cfupdate 357 cftable cfif body html...
Page 362: ...362 Chapter 2 ColdFusion Tags cfloop MyDoc cfxml cfdump var MyDoc...
Page 397: ...ASin 397 br input type Text name sinNum size 25 p input type Submit name input type RESET form...
Page 486: ...486 Chapter 3 ColdFusion Functions input type Submit NAME form...
Page 492: ...492 Chapter 3 ColdFusion Functions b http_content x content b cfoutput...
Page 504: ...504 Chapter 3 ColdFusion Functions tr table form...
Page 519: ...IIf 519 cfoutput b...
Page 534: ...534 Chapter 3 ColdFusion Functions input type Submit name form...
Page 542: ...542 Chapter 3 ColdFusion Functions cfif cfif...
Page 547: ...IsStruct 547 cfcase cfswitch...
Page 550: ...550 Chapter 3 ColdFusion Functions IsWDDX returns IsWDDX packet br cfoutput...
Page 559: ...Left 559 option value 9 9 select input type Submit name Remove characters form...
Page 620: ...620 Chapter 3 ColdFusion Functions cfoutput cfloop...
Page 681: ...SetVariable 681 p Your variable varName p The value of varName is varNameValue cfoutput cfif...
Page 724: ...724 Chapter 3 ColdFusion Functions cfelse h3 Conversion error h3 cfif...
Page 743: ...XmlNew 743 cfscript cfdump var MyDoc...
Page 786: ...786 Chapter 5 ColdFusion Java CFX Reference...
Page 798: ...798 Chapter 6 WDDX JavaScript Objects...
Page 806: ...806 Chapter 7 ColdFusion ActionScript Functions...