如何在scala js中实现线程安全计数器或增量

时间:2017-02-17 09:17:41

标签: multithreading scala.js

  

JavaScript本身就是单线程的。

这是否意味着我们可以简单地在js项目中编写//believe it's thread safe? object ScalaObject{ private var counter = 0L def get:Long = { counter = counter + 1 counter } } 计数器,并相信它能正常工作?

@volatile

我不是来自javascript世界。我想确定一下。

添加synchronized/path/to/script args >> /path/logfile 2>> test.txt && echo "$(date) success" >> /path/logfile || echo "$(date) errors" >> /path/logfile 不会导致编译器出错。并且似乎不会影响编译的js代码。

1 个答案:

答案 0 :(得分:2)

  

这是否意味着我们可以简单地在js项目中编写var计数器,并相信它能正常工作?

在Scala.js中阅读the implementation of AtomicLong也很有趣。你会发现它只是一个简单的愚蠢var,有很多仪式要遵守界面。