diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-12-10 16:46:44 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-12-10 16:46:44 +0000 |
commit | 0bff4d75254dabb2c002eace2252a4480bf8474e (patch) | |
tree | bc41ea8dee439fea748d3438a9ddfecea6786e52 /rts/Schedule.c | |
parent | d779cca065e2059d300928b0d547798f36afb073 (diff) | |
download | haskell-0bff4d75254dabb2c002eace2252a4480bf8474e.tar.gz |
wake up other Capabilities even when there is only one spark (see #2868)
Diffstat (limited to 'rts/Schedule.c')
-rw-r--r-- | rts/Schedule.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/rts/Schedule.c b/rts/Schedule.c index 33715b1ecd..38e3a3c2ce 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -777,9 +777,11 @@ schedulePushWork(Capability *cap USED_IF_THREADS, // Check whether we have more threads on our run queue, or sparks // in our pool, that we could hand to another Capability. - if ((emptyRunQueue(cap) || cap->run_queue_hd->_link == END_TSO_QUEUE) - && sparkPoolSizeCap(cap) < 2) { - return; + if (cap->run_queue_hd == END_TSO_QUEUE) { + if (sparkPoolSizeCap(cap) < 2) return; + } else { + if (cap->run_queue_hd->_link == END_TSO_QUEUE && + sparkPoolSizeCap(cap) < 1) return; } // First grab as many free Capabilities as we can. |