-
Type: New Feature
-
Resolution: Declined
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Internal Code
-
Labels:None
-
Service Arch
-
Fully Compatible
Add support for a single level form of subsidiary deadlines + uninterruptibility in Interruptible with a syntax that looks like:
future.get(interruptible->makeTimer(deadline, code));
That syntax should produce a type convertible to an Interruptible* which wraps underlying calls to checkForInterrupt or waitForConditionOrInterruptUntil calls in the appropriate guards. It should replace the more wordy:
interruptible->runWithDeadline(deadline, code, [&]{ future.get(interruptible); });
when a subsidiary deadline or uninterruptible invocation is needed at the very bottom of the callstack.
That type should not nest and should not alter the state of the parent interruptible