open System.Reactive.Concurrency
open System.Reactive.Disposables
open System
let print i = printfn "%i on thread %i" i Threading.Thread.CurrentThread.ManagedThreadId
CurrentThreadScheduler.Instance.Schedule((), fun _ _ ->
CurrentThreadScheduler.Instance.Schedule((), fun _ _ -> print 3)
print 2
Disposable.Empty
)
print 1
Вывод:
2 on thread 1
3 on thread 1
1 on thread 1
Почему print 1
выполняется последним, когда он находится во внешней области видимости? Почему предшествующий ему оператор не ставится в очередь и сразу же выполняется в отличие от CurrentThreadScheduler.Instance.Schedule((), fun _ _ -> print 3)
?