如何在 scala js 中实现线程安全的计数器或增量
How to implement a thread safe counter or increment in scala js
JavaScript by itself is single-threaded.
这是否意味着我们可以简单地在 js 项目中编写 var
计数器,并相信它可以正常工作?
//believe it's thread safe?
object ScalaObject{
private var counter = 0L
def get:Long = {
counter = counter + 1
counter
}
}
我不是来自 javascript 世界。我想确定一下。
添加@volatile
或synchronized
不会导致编译器出错。而且似乎不影响编译后的js代码。
Does this mean that we could simply write var counter in js project, and trust it to work properly?
是的。
阅读 Scala.js 中的 the implementation of AtomicLong
也很有趣。你会看到它只是一个简单的愚蠢var
,有很多仪式要遵守界面。
JavaScript by itself is single-threaded.
这是否意味着我们可以简单地在 js 项目中编写 var
计数器,并相信它可以正常工作?
//believe it's thread safe?
object ScalaObject{
private var counter = 0L
def get:Long = {
counter = counter + 1
counter
}
}
我不是来自 javascript 世界。我想确定一下。
添加@volatile
或synchronized
不会导致编译器出错。而且似乎不影响编译后的js代码。
Does this mean that we could simply write var counter in js project, and trust it to work properly?
是的。
阅读 Scala.js 中的 the implementation of AtomicLong
也很有趣。你会看到它只是一个简单的愚蠢var
,有很多仪式要遵守界面。