Jude,

Yes, it is similar, but not exactly the same. The difference is in  the way 
tasks are managed. There is no global task queue, and each thread has
its own. Each thread operates on its own task queue, and each task can 
recursively add tasks to the owning thread's head. The head exclusively
belongs to the thread, hence no locking is required. When a thread is out of 
tasks, it steals a task from the tail of another queue in a round robin
fashion. In this case, locking is required. :D It has substantially lower 
overhead than global task pools.

This allows us to efficiently map recursive algorithms with non uniform work 
loads to the task queuing scheme.

But that's not important to the current discussion, as the language mechanisms 
that allow us to implement the current task pool can also be used for
task stealing based approaches.

What I would like to know, is how does the no default sharing idiom apply to 
that? I have seen the examples already, and its not particularly clear
to me how this could be done without explicitly adding and managing @shared 
tags.

- Debdatta

Reply via email to