Когда я должен использовать Блокировку Объема (Приложение, Сервер, и т.д. …) по сравнению с именованной привязкой ColdFusion?

Изучив выходные данные cl.exe /? для MSVC 2017, я обнаружил:

/std:<c++14|c++17|c++latest> C++ standard version
    c++14 – ISO/IEC 14882:2014 (default)
    c++17 – ISO/IEC 14882:2017
    c++latest – latest draft standard (feature set subject to change)

Похоже, что:

  • Нет переключателя для строгой совместимости с C ++ 11 .
  • Правильный синтаксис: /std:..., а не -std=...
.
11
задан Adam Tuttle 1 October 2010 в 21:04
поделиться

4 ответа

Необходимо использовать при чтении и записи из вещей, которые могут измениться в области действия приложения. Например:

<cfquery name="application.myData">
    select * from myTable
</cfquery>

Вы собираетесь хотеть заблокировать это с типом = "эксклюзивный". Везде, где application.myData используется, Вам нужен тип = блокировка "только для чтения". Исключением является метод OnApplicationStart Application.cfc, который блокирует себя. Аналогично используйте ту же стратегию с объемами сервера и сессией.

Названные блокировки дают Вам больше контроля Вашей стратегией блокировки. Используйте именованный cflock, когда необходимо будет заблокировать команды динамично. Например:

<cflock name="write_file_#session.user_type#" type="exclusive">
    <cffile action="write" name="file_#session.user_type#" output="#content#" />
</cflock>

В этом примере пользователям различных типов разрешают записать файл одновременно, но пользователи с той же сессией user_type должны ожидать друг друга. Этот cflock помогает избежать проблем конкуренции файла.

Другая причина использовать именованную блокировку состоит в том, если Вы не знаете объема своей текущей операции. Если Вы находитесь в инстанцированном cfc, как Вы знаете то, что определяет объем Вас, были инстанцированы в? Переменные? Сессия? Приложение? Хорошая инкапсуляция учит нас, что объекты не знают ничего кроме того, что им сказали. В CFC используйте именованную блокировку и назовите его в честь CFC, или CFC и уникальной переменной экземпляра в зависимости от Вашего варианта использования.

10
ответ дан 3 December 2019 в 08:06
поделиться

здание на других предложениях здесь.

честно говоря, начиная с появления cf8 и теперь, когда дубликат () может копировать объекты, я только использовал бы блокировки объема при записи в приложение, сессию или объем сервера (btw, запись в объем сервера является большим нет - нет в моей книге).

если бы необходимо считать данные, я использовал бы дубликат (), чтобы сделать глубокую копию данных к локальной переменной и избежать, чтобы чтение заблокировало все вместе. это предотвратит мертвые блокировки.

<cflock scope="application" timeout="5" type="exlusive">
 <cfset application.data = {}>
 <cfset application.data.firstname = "tony">
</cflock>

<cfset variables.firstname = duplicate(application.data.firstname)>
2
ответ дан 3 December 2019 в 08:06
поделиться

Обычно необходимо всегда использовать cflock для сессии, приложение и сервер Вар любое время Вы читаете или изменяете их Вар за пределами Application.cfc, чтобы предотвратить условия состязания. Вот статья, которая может быть полезной:

http://www.horwith.com/index.cfm/2008/4/28/cflock-explained

Править: Для дальнейшего ответа на вопрос об объеме я всегда использую <cflock scope="application"> (например), взаимодействуя с совместно используемыми ресурсами.

0
ответ дан 3 December 2019 в 08:06
поделиться

Продолжать, что @Mr. Nate сказал, используйте блокировки каждый раз, когда Вы обеспокоены условиями состязания. Например, можно хотеть заблокировать инициализацию сессии, но не последующие чтения. Точно так же можно хотеть заблокировать записи к области действия приложения, но не чтения.

Блокировка чтения намного менее полезна начиная с CF6, который представил ориентированные на многопотоковое исполнение объемы совместно используемой переменной. В плохие былые времена, если Вы не были осторожны, Вы могли бы одновременно читать и писать тот же адрес памяти. Однако, так как CF стал приводимым в действие Java, это не проблема.

Названные блокировки полезны, как он продемонстрировал для блокировки чего-либо, что не ограничено по объему, как чтение-записи файла.

2
ответ дан 3 December 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: