ColdFusion中的线程安全序列号生成器?

Hen*_*nry 0 coldfusion

如果我有一个带有方法的Generator.cfc:

numeric function next()
{
    return variables.num++;   // Is ++ an atomic operation??
}
Run Code Online (Sandbox Code Playgroud)

和:

application.generator = new generator();
Run Code Online (Sandbox Code Playgroud)

如果每个请求都调用application.generator.next(),那么这个生成器在重负载时会生成两次相同的数字吗?换句话说......这是线程安全的吗?如果没有,锁定在哪里?

Bob*_*ght 5

您还可以查看Java 5类Atomic Integer

您需要的ColdFusion代码是这样的(我还没有测试过):

<cfset i = createObject("java", "java.util.concurrent.atomic.AtomicInteger").init(startValue) />
<cfset newValue = i.incrementAndGet() />
Run Code Online (Sandbox Code Playgroud)