Какая правильная последовательность, в которой cflock освобождается при использовании нескольких блокировок в разных функциях?
Учитывая следующий сценарий, я хотел бы знать, если функция functionOneLock будет выпущена до запуска функцииTwoLock или она дожидается до тех пор, пока функция 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>
Я предполагаю, что вы вызываете functionOne()
из functionTwo()
, например:
<!--- functionOne() --->
<cffunction name="functionOne">
<cflock name="functionOneLock" type="exclusive">
<!--- do something --->
<cfset functionTwo() />
</cflock>
</cffunction>
Поскольку вы используете именованные блокировки, ваш поток выполнения будет вводить functionOneLock
, а затем внутри этого вызова будет добавлена другая функция, введя functionTwoLock
. Затем он завершит код внутри этой блокировки перед возвратом из этой функции и завершает functionOneLock
.
Итак, чтобы ответить на ваш вопрос functionOneLock
, нужно будет ждать завершения functionTwoLock
.
Надеюсь, что это поможет.