Currently, when forking a task, the child inherits all of the dependents.
This is generally useful, but can become a pitfall for the following cases:
New dependents may appear at any moment, which would make forking a race against adding new dependents.
join() doesn't know or care about forked tasks, so the parent will technically finish before the children.
Instead, it would seem natural to expect that all the children are opaque to the caller. Join() should wait for all, and dependents should be propagated to all, or simply shared.
Currently, when forking a task, the child inherits all of the dependents. This is generally useful, but can become a pitfall for the following cases:
join()
doesn't know or care about forked tasks, so the parent will technically finish before the children.Instead, it would seem natural to expect that all the children are opaque to the caller. Join() should wait for all, and dependents should be propagated to all, or simply shared.