|
|
1
0
从理论上讲,如果在更新指数和更新尾数之间进行上下文切换,可能会出现很大程度的错误,但我怀疑目前使用的大多数平台或架构是否允许发生这种情况。 |
|
|
2
1
据我所知,你可以忽略竞争条件,只要你一次只在线程上写可验证的,你不在乎你的阅读线程是否使用最新版本。 根据我的理解,编写浮点应该是原子的,尽管我认为这可能依赖于平台。 |
|
|
3
1
Section 12.5 of ECMA-334 (C语言规范)规定:
为此,您不应该看到由于读取和写入浮点而导致的任何损坏(假设您不是指这里的double,即 不 保证是原子写的)。 然而,需要注意的是,虽然值的写入被保证是原子的,但是读/写的顺序是 不 保证,除非你用的是特定的东西,比如 Monitor.Enter . 不过,输入有点重,所以我建议使用 volatile keyword 当声明变量时。假设这个变量的读/写是唯一需要发生的事情,它将保证读/写是按顺序完成的。 |