这个函数对于并发执行是否安全?

时间:2010-11-26 10:41:01

标签: scala concurrency

  def isSafe( i:Int) = {
    var count = i
    var acc = 0
    while(count!=0){
      acc += i*i
      count -= 1
    }
    acc
  }

2 个答案:

答案 0 :(得分:7)

如果安全的话,你的意思是它会返回相同的结果,而不管调用它的线程数和顺序,那么是的,它是安全的。这是因为它不会修改任何共享内存位置,只修改其局部变量。

答案 1 :(得分:3)

这是安全的,没有可能导致跨线程污染的共享状态。

它也大大过于复杂,以下定义既短又快:

def isSafe(i: Int) = i * i * i