|
|
|
|
|
by Sonata
745 days ago
|
|
The approach taken to this problem by Cats Effect (a Scala concurrency library) is interesting. It allows cancellation of a fiber from outside, but let's blocks of code be marked as uncancelable. If a fiber is cancelled while executing one of these blocks, it will complete the block before cancelling. This protects against cancellation in between two operations which leaves the program in a broken state. The drawback of this approach is that the onus is on anybody writing code which might be cancelled to correctly mark the uncancelable regions. |
|
There's a fundamental tension between 'stop now' and 'close your file handles before stopping'.