Tasks refer back to an app, but to for easier thread safety,
tasks need to only execute on a singly thread at a given time.
Model. Within a workflow:
nothing touches a task outside of process
No looking up tasks that aren't defined for an instance and
messing with them. In short stay away from the app queue,
dependencies, etc.
apps only execute a task on a single thread
While in process, an app owns the task. Outside of process, set
the app to nil.
Together this means that while an app owns the task, the task
may change. When an app doesn't own the task, the task will not
change. This prevents synchronization to be implemented per
task.
But it also prevents thread-safe tasks from running in multiple
places... Not a solution.
What brings this up is workflows that my have to coordinate the
inputs/configs for a particular task, for example tasks that use an
io config for input/output. Maybe the problem is simply that
mutable configs are getting used.