[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] Error handling in Mirage - request for comments!
On Wed, 4 Feb 2015 11:52:28 +0000, Thomas Leonard wrote: > > On 3 February 2015 at 23:16, Christophe Troestler > <Christophe.Troestler@xxxxxxxxxxx> wrote: > > On Mon, 2 Feb 2015 12:30:39 +0000, Thomas Leonard wrote: > >> > >> let bind t f = > >> let t = repr t in > >> match t.state with > >> | Return v -> > >> f v > >> | Fail _ as state -> > >> thread { state } > >> | Sleep sleeper -> > >> let res = temp t in > >> let data = !current_data in > >> add_immutable_waiter sleeper > >> (function > >> | Return v -> current_data := data; connect res (try f v > >> with exn -> fail exn) > >> | Fail _ as state -> fast_connect res state > >> | _ -> assert false); > >> res > > > > Thanks for checking. At first, the difference of treatment between > > the two âf vâ is a little odd. Do you happen to know the reason for > > it? > > I assume it's a speed optimisation Thinking a bit more about this, I wonder whether it may be more fundamental: when the state is âReturnâ, the exception will travel the chain of calls of the same "thread" up until it reaches a handler â so one can dispense putting a handler â, when it is âSleepâ, it is possible that it escape the current thread. [Will read the rest later â at a meeting...] Best, C. _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |