File tree Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Original file line number Diff line number Diff line change 103103Assume that a fiber executing the above code might be canceled, at any point, by
104104another fiber running in parallel. This could be necessary, for example, due to
105105an error that requires the application to be shut down. How could that be done
106- while ensuring both safety and liveness?
106+ while ensuring both
107+ [ safety and liveness] ( https://en.wikipedia.org/wiki/Safety_and_liveness_properties ) ?
107108
108109- For safety, cancelation should not leave the program in an invalid state or
109110 cause the program to leak memory. In this case, ` Condition.wait ` must exit
@@ -332,10 +333,12 @@ flexibility in mind:
332333 ` Computation ` an omnidirectional communication primitive.
333334
334335Interestingly, and unintentionally, it turns out that ` Computation ` is almost
335- expressive enough to implement the event abstraction of Concurrent ML. The same
336- features that make ` Computation ` suitable for implementing more or less
337- arbitrary dynamic completion propagation networks make it suitable for
338- implementing Concurrent ML style abstractions.
336+ expressive enough to implement the
337+ [ event] ( https://ocaml.org/manual/latest/api/Event.html ) abstraction of
338+ [ Concurrent ML] ( https://en.wikipedia.org/wiki/Concurrent_ML ) . The same features
339+ that make ` Computation ` suitable for implementing more or less arbitrary dynamic
340+ completion propagation networks make it suitable for implementing Concurrent ML
341+ style abstractions.
339342
340343### ` Fiber `
341344
You can’t perform that action at this time.
0 commit comments