Предположим, у меня есть следующий код:
let a = ref 4.
printfn "1) a = %g" !a
let t1 = System.Threading.Thread (fun () ->
lock a (fun () ->
printfn "locked"
System.Threading.Thread.Sleep 1000
printfn "unlocked") )
t1.Start()
System.Threading.Thread.Sleep 100
a := 8.
printfn "2) a = %g" !a
Что дает следующий результат:
1) a = 4
2) a = 8val a : float ref = {содержание = 8.0;}
val t1 : System.Threading.Threadunlocked
Почему a
равно 8.
, когда я заблокировал ее? Можно ли заблокировать запись с изменяемыми значениями и ссылками?
PS: Мне нужно заблокировать объект, к которому обращаюсь я и в то же время WCF.