Skip to content

Commit d09161c

Browse files
committed
More links
1 parent 14209c9 commit d09161c

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ end
103103
Assume that a fiber executing the above code might be canceled, at any point, by
104104
another fiber running in parallel. This could be necessary, for example, due to
105105
an 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

334335
Interestingly, 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

0 commit comments

Comments
 (0)