Peter Firmstone wrote:
Peter Firmstone wrote:
Patricia Shanahan wrote: .
Essentially, this is the usual operating system strategy of putting
threads that are not currently runnable in a data structure
associated with the reason for non-runnability, outside the priority
structure that dispatches runnable threads. This minimizes the cost
to the dispatcher of a thread that cannot do anything useful until
some disk read finishes.
Hmm, this shows problem solving experience, take a learning and reapply
it to something new. Would this mean that you'd have a dispatch thread
that checks if the parked tasks are ready?
We always know when a Task finishes or is removed. At that point, ask
"Does this Task have any others that have reported dependency on it?".
If so, for each of those tasks, do a new dependency check. If there are
now no dependencies, put is in the dispatch data structure. If there is
at least one dependency, attach it to the task on which it is now known
to depend and reconsider it when that task finishes or is removed.
Patricia