2017-02-17 9 views
0

JavaScript сам по себе является однопоточным.Как реализовать защитный счетчик потока или приращение в scala js

Означает ли это, что мы могли бы просто написать счетчик var в проекте js и надеемся, что он будет работать правильно?

//believe it's thread safe? 
object ScalaObject{ 
    private var counter = 0L 
    def get:Long = { 
    counter = counter + 1 
    counter 
    } 
} 

Я не из мира javascript. Я хочу это сделать.

Добавление @volatile или synchronized не вызывает ошибки в компиляторе. И, похоже, не влияет на скомпилированный js-код.

ответ

2

Означает ли это, что мы могли бы просто написать счетчик var в проекте js и надеяться, что он будет работать правильно?

Да.

Это также интересно читать the implementation of AtomicLong в Scala.js. Вы увидите, что это просто глупый var, с большим количеством церемоний, чтобы соответствовать интерфейсу.

+0

Это может заслуживать работу на www.scala-js.org – keos