【问题标题】:When to use locking in application scope何时在应用程序范围内使用锁定
【发布时间】:2008-11-19 14:15:43
【问题描述】:

我想知道是否需要锁定在应用程序范围内创建的一些代码。如果我在应用程序范围内创建一个对象说 userDAO.cfc,那么它可用于所有页面。那么如果我在该对象中有一个方法说 getUserInfo(userID) 将在应用程序的不同部分调用,我是否需要锁定这个方法?

【问题讨论】:

标签: coldfusion locking shared-memory


【解决方案1】:

简短的回答:可能不会。

如果该对象是在 Application.cfc 的 OnApplicationStart() 方法中在应用程序范围内创建的,并且它永远不会更改,并且您确保为所有函数更改所有变量,那么您将不需要锁定对它的访问。

在这种情况下,OnApplicationStart() 会为您进行锁定,并且在创建该方法之前不会让任何人继续操作。这很好,因为它只允许创建一次项目,并确保它在其他人使用它之前就存在。

如果您从其他任何地方实例化该对象,例如某个随机页面的顶部,那么是的,您需要将它锁定在这里,以及引用它的任何地方。

如果对象会变成另一个对象,或者如果它保持任何状态,例如私有或公共变量(变量。* 或 this.*)会变成其他东西,您可能希望在外部锁定它,或者您可以尝试在每个变量的基础上将其锁定在 cfc 中。

最后,如果您不更改所有变量 (use Mike Schierberl's varScoper!),那么您将更改对象的状态。你永远不应该真的走到这一步,但这是一个锁定的案例。

如果您使用的是 CF 5 或更低版本,则必须锁定任何共享范围访问权限;如果您使用的是 CF 6 或 6.1,则没有 Application.cfc。

【讨论】:

  • 好吧,ColdFusion 5 排除了使用 CFC 的可能性,否则你是对的。
猜你喜欢
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2014-02-28
  • 2016-02-18
  • 1970-01-01
相关资源
最近更新 更多