[project @ 2004-02-26 16:31:44 by simonmar]
authorsimonmar <unknown>
Thu, 26 Feb 2004 16:31:44 +0000 (16:31 +0000)
committersimonmar <unknown>
Thu, 26 Feb 2004 16:31:44 +0000 (16:31 +0000)
Avoid signalling thread_ready_cond if rts_n_waiting_tasks==0.

ghc/rts/Capability.c

index 18ef4df..c99cf05 100644 (file)
@@ -206,7 +206,9 @@ releaseCapability( Capability* cap UNUSED_IF_NOT_SMP )
        rts_n_free_capabilities = 1;
 #endif
        // Signal that a capability is available
-       signalCondition(&thread_ready_cond);
+       if (rts_n_waiting_tasks > 0) {
+           signalCondition(&thread_ready_cond);
+       }
        startSchedulerTaskIfNecessary();
        IF_DEBUG(scheduler, sched_belch("worker: released capability"));
     }