
336
Chapter 15: Using Persistent Data and Locking
Lock types
The
cflock
tag offers two modes of locking, specified by the
type
attribute:
•
Exclusive locks
(the default lock type)
Allow only one request to process the locked code.
No other requests can run code inside the tag while a request has an exclusive lock.
Enclose all code that creates or modifies session,application, or server variables in exclusive
cflock
tags.
•
Read-only locks
Allow multiple requests to execute concurrently if no exclusive locks with
the same scope or name are executing. No requests can run code inside the tag while a request
has an exclusive lock.
Enclose code that only reads or tests session, application, or server variables in read-only
cflock
tags. You specify a read-only lock by setting the
type="readOnly"
attribute in the
cflock
tag, for example:
<cflock scope="Application" timeout="10" type="readOnly">
<cfif IsDefined("Application.dailyMessage")>
<cfoutput>#Application.dailyMessage#<br></cfoutput>
</cfif>
</cflock>
Although ColdFusion does not prevent you from setting shared variables inside read-only lock
tag, doing so loses the advantages of locking. As a result, you must be careful not to set any
session, application, or server variables inside a read-only
cflock
tag body.
Note:
You cannot upgrade or downgrade a lock from one type to another. In other words, do not nest
an exclusive lock in a read-only lock of the same name or scope; the exclusive lock will always time
out. Also, do not nest a read-only lock inside an exclusive lock with the same name or scope; doing so
has no effect.
Lock scopes and names
The
cflock
tag prevents simultaneous access to sections of code, not to variables. If you have two
sections of code that access the same variable, they must be synchronized to prevent them from
running simultaneously. You do this by identifying the locks with the same
scope
or
name
attributes.
Note:
ColdFusion does not require you to identify exclusive locks. If you omit the identifier, the lock is
anonymous and you cannot synchronize the code in the
cflock
tag block with any other code.
Anonymous locks do not cause errors when they protect a resource that is used in a single code
block, but they are bad programming practice. You must always identify read-only locks.
Controlling access to data with the scope attribute
When the code that you are locking accesses session, application, or server variables, synchronize
access by using the
cflock
scope
attribute.
You can set the attribute to any of the following values:
Scope
Meaning
Server
All code sections with this attribute on the server share a single lock.
Application
All code sections with this attribute in the same application share a single lock.
Session
All code sections with this attribute that run in the same session of an application
share a single lock.
Содержание COLDFUSION MX 61-DEVELOPING COLDFUSION MX
Страница 1: ...Developing ColdFusion MX Applications...
Страница 22: ...22 Contents...
Страница 38: ......
Страница 52: ...52 Chapter 2 Elements of CFML...
Страница 162: ......
Страница 218: ...218 Chapter 10 Writing and Calling User Defined Functions...
Страница 250: ...250 Chapter 11 Building and Using ColdFusion Components...
Страница 264: ...264 Chapter 12 Building Custom CFXAPI Tags...
Страница 266: ......
Страница 314: ...314 Chapter 14 Handling Errors...
Страница 344: ...344 Chapter 15 Using Persistent Data and Locking...
Страница 349: ...About user security 349...
Страница 357: ...Security scenarios 357...
Страница 370: ...370 Chapter 16 Securing Applications...
Страница 388: ...388 Chapter 17 Developing Globalized Applications...
Страница 408: ...408 Chapter 18 Debugging and Troubleshooting Applications...
Страница 410: ......
Страница 426: ...426 Chapter 19 Introduction to Databases and SQL...
Страница 476: ...476 Chapter 22 Using Query of Queries...
Страница 534: ...534 Chapter 24 Building a Search Interface...
Страница 556: ...556 Chapter 25 Using Verity Search Expressions...
Страница 558: ......
Страница 582: ...582 Chapter 26 Retrieving and Formatting Data...
Страница 668: ......
Страница 734: ...734 Chapter 32 Using Web Services...
Страница 760: ...760 Chapter 33 Integrating J2EE and Java Elements in CFML Applications...
Страница 786: ...786 Chapter 34 Integrating COM and CORBA Objects in CFML Applications...
Страница 788: ......
Страница 806: ...806 Chapter 35 Sending and Receiving E Mail...