Coldfusion 何时在应用范围内使用锁定

Coldfusion 何时在应用范围内使用锁定,coldfusion,locking,shared-memory,Coldfusion,Locking,Shared Memory,我想知道是否需要锁定在应用程序范围中创建的一些代码。如果我在应用程序范围内创建一个对象,比如userDAO.cfc,那么它对所有页面都可用。那么,如果我在该对象中有一个方法,比如getUserInfo(userID),它将在应用程序的不同部分调用,那么我需要锁定这个方法吗?简短回答:可能不需要 如果该对象是从application.cfc的OnApplicationStart()方法中在应用程序作用域中创建的,并且它从不更改,并且您确保为所有函数设置所有变量的var,那么您就不需要锁定对该对象的

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

简短回答:可能不需要

如果该对象是从application.cfc的OnApplicationStart()方法中在应用程序作用域中创建的,并且它从不更改,并且您确保为所有函数设置所有变量的var,那么您就不需要锁定对该对象的访问

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

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

如果对象将更改为另一个对象,或者如果它保持任何状态,如私有或公共变量(variables.*或this.*)更改为其他对象,您可能希望从外部锁定它,或者可以尝试在cfc内部按每个变量锁定它

最后,如果您没有对所有变量()进行var,那么您将更改对象的状态。您永远不应该真正达到这一点,但这是一个锁定的情况


如果您使用的是CF 5或更低版本,则所有共享作用域访问都必须锁定;如果您使用的是CF 6或6.1,则没有应用程序。cfc。

简短回答:可能没有

如果该对象是从application.cfc的OnApplicationStart()方法中在应用程序作用域中创建的,并且它从不更改,并且您确保为所有函数设置所有变量的var,那么您就不需要锁定对该对象的访问

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

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

如果对象将更改为另一个对象,或者如果它保持任何状态,如私有或公共变量(variables.*或this.*)更改为其他对象,您可能希望从外部锁定它,或者可以尝试在cfc内部按每个变量锁定它

最后,如果您没有对所有变量()进行var,那么您将更改对象的状态。您永远不应该真正达到这一点,但这是一个锁定的情况


如果您使用的是CF 5或更低版本,则所有共享作用域访问都必须锁定;如果您使用的是CF 6或6.1,则没有应用程序。cfc。

好吧,ColdFusion 5排除了使用cfc的可能性,但在其他情况下,您是对的。好吧,ColdFusion 5排除了使用CFC的可能性,但在其他方面你是对的。另请参见: