F#:有没有办法将ref单元格内容标记为volatile?

mt9*_*t99 7 f#

我遇到过一种情况,其中包含布尔值的ref单元格允许我非常方便地解决告诉旋转等待循环停止旋转等待的问题.我需要将此标志标记为volatile(即[<VolatileField>]),但这样的字段需要mutable根据编译器,这正是我不希望引用的 - 我希望它的内容是可变的,而不是引用单元格场本身.

有没有一种标准的方法可以告诉ref单元格将其内容标记为易失性,还是需要滚动自己的ref单元格(即复制粘贴标准的ref单元格定义,如果[<VolatileField>]卡在上面mutable contents)?那么,纠正这个事实,你不能将记录字段标记为易变...

V.B*_*.B. 7

Volatile.Interlocked.方法只适用于ref单元格:

open System.Threading

let refCell = ref 0

Volatile.Write(refCell, 42)
let fortyTwo = Volatile.Read(refCell)
Run Code Online (Sandbox Code Playgroud)

您甚至不需要&!在ref cell单元格之前变量名称,它们已经是引用.VolatileInterlocked方法比这里[<VolatileField>]描述的更容易推理.