Nach einigen es scheint zu denken, dass eine Sperre auf Seq.iteri Platzierung tatsächlich da ein Seq keinen Sinn macht ist faul in F #.
Es ist jedoch interessant festzustellen, dass eine Ausnahme ausgelöst wird, wenn zusätzliche Elemente eines Wörterbuchs von einem anderen Thread während der Iteration der Sequenz eingefügt werden. Nicht sicher, ob dies für eine langsame Iteration vollständig gewährleistet ist.
Meine Lösung (als Funktion) ist im Moment:
(fun _ ->
lock info (fun _ ->
info
|> Seq.iteri (fun i x -> ...)))
Ich hoffe, dass es in Ordnung ist meine eigene Frage zu beantworten (Ich bin hier).
Wäre nicht die Sperre freigegeben, die in safefetch gesetzt wird, kurz bevor Map.iter startet? – Moonlight
Eines der Probleme mit einer Map besteht darin, wie sie von einem Thread an einen Dispatcher in einem anderen Thread übergeben wird. Jede Änderung ergibt eine andere Karte. Wenn ich ein Postfach nicht implementiere, sehe ich nicht, wie ich es weitergeben soll. Eine Schließung vielleicht? – Moonlight