Какая правильная последовательность, в которой cflock освобождается при использовании нескольких блокировок в разных функциях?

60
6

Учитывая следующий сценарий, я хотел бы знать, если функция 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>

спросил(а) 2010-09-30T19:01:00+04:00 9 лет, 4 месяца назад
1
Решение
62

Я предполагаю, что вы вызываете functionOne() из functionTwo(), например:


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

Поскольку вы используете именованные блокировки, ваш поток выполнения будет вводить functionOneLock, а затем внутри этого вызова будет добавлена ​​другая функция, введя functionTwoLock. Затем он завершит код внутри этой блокировки перед возвратом из этой функции и завершает functionOneLock.

Итак, чтобы ответить на ваш вопрос functionOneLock, нужно будет ждать завершения functionTwoLock.


Надеюсь, что это поможет.

ответил(а) 2010-09-30T19:56:00+04:00 9 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема