在不同函数中使用多个锁时,cflock释放的正确顺序是什么?

时间:2010-09-30 16:01:33

标签: coldfusion synchronization locking

鉴于以下情况,我想知道functionOneLock是否在触发functionTwoLock之前释放自身,还是等到functionTwoLock首先发布?

<!--- functionOne() --->
<cffunction name="functionOne">
<cflock name="functionOneLock" type="exclusive">
   <!--- do something --->
   <cfset functionTwo()>
</cflock>
</cffunction>

<!--- functionTwo() --->
<cffunction name="functionTwo">
<cflock name="functionTwoLock" type="exclusive">
   <!--- do something here --->
</cflock>
</cffunction>

1 个答案:

答案 0 :(得分:2)

我认为你是从functionOne()致电functionTwo(),如下:

<!--- functionOne() --->
<cffunction name="functionOne">
<cflock name="functionOneLock" type="exclusive">
   <!--- do something --->
   <cfset functionTwo() />
</cflock>
</cffunction>

由于您使用的是命名锁,因此您的执行线程将输入functionOneLock,然后在该调用中输入另一个函数functionTwoLock。然后,它将在从该函数返回并完成functionOneLock之前完成该锁中的代码。

因此,要回答您的问题,functionOneLock必须等待functionTwoLock完成。

希望有所帮助。