I have searched for many websites for a definition of "task pool", but most descriptions are very vague. Anywhere I can find a precise definition of it?
- Are dependencies allowed in task pool?
- Can a running task exchange data with other running tasks?
- To phrase conversely, are tasks permitted to accept data only prior to start and permitted to publish results only after the task has finished?
- What keeps track of the temporary resources (memory, CPU etc) that are used by tasks?
- How to define weights that will encourage efficient task assignment?
- For example, if one task needs to pass a lot of data to the next task, it may make sense to run the next task immediately following the first task, and as close to the first thread / CPU / machine / cluster (locality) as possible
- What about tasks that are not known (do not exist) in the beginning, but were "created" later?