Concurrency.

Debdatta debdatta.basu91 at gmail.com
Sun Nov 27 23:05:43 PST 2011


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


More information about the Digitalmars-d mailing list