Commit 58852522 authored by Simon Marlow's avatar Simon Marlow
Browse files

don't run sparks if there are other threads on this Capability

parent a6e1fda4
......@@ -57,15 +57,18 @@ globalWorkToDo (void)
StgClosure *
findSpark (Capability *cap)
{
/* use the normal Sparks.h interface (internally modified to enable
concurrent stealing)
and immediately turn the spark into a thread when successful
*/
Capability *robbed;
StgClosurePtr spark;
rtsBool retry;
nat i = 0;
if (!emptyRunQueue(cap)) {
// If there are other threads, don't try to run any new
// sparks: sparks might be speculative, we don't want to take
// resources away from the main computation.
return 0;
}
// first try to get a spark from our own pool.
// We should be using reclaimSpark(), because it works without
// needing any atomic instructions:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment