我遇到过这样一种情况,包含布尔值的ref单元格允许我非常方便地解决告诉旋转等待循环停止旋转等待的问题。我需要将这个标志标记为mutable
(即[<VolatileField>]
),但是根据编译器,这样的字段需要是可变的,这正是我不希望引用是可变的--我希望它的内容是可变的,而不是引用单元格字段本身。
有没有一种标准的方法来告诉引用单元格将其内容标记为易失性,或者我是否需要滚动自己的引用单元格(即复制粘贴标准引用单元格定义,并将[<VolatileField>]
粘贴在mutable contents
上方)?好吧,为了纠正不能将记录字段标记为易失性的事实...
发布于 2016-07-26 20:40:12
Volatile.
或Interlocked.
方法只适用于引用单元格:
open System.Threading
let refCell = ref 0
Volatile.Write(refCell, 42)
let fortyTwo = Volatile.Read(refCell)
你甚至不需要在引用单元格变量名之前使用&
或!
,它们已经是引用了。如here所述,Volatile
和Interlocked
方法比[<VolatileField>]
更容易推理。
https://stackoverflow.com/questions/38587002
复制相似问题