Commit 31df767cc7bbdc4796f328bf46cb78bd24f59518

Con Kolivas 2013-11-03T22:29:29

Make hash_pop signal the work scheduler each time it waits on the conditional that it should look for more work.

diff --git a/cgminer.c b/cgminer.c
index b41a69f..cdbf701 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -5923,6 +5923,7 @@ static struct work *hash_pop(void)
 			cgtime(&now);
 			then.tv_sec = now.tv_sec + 10;
 			then.tv_nsec = now.tv_usec * 1000;
+			pthread_cond_signal(&gws_cond);
 			rc = pthread_cond_timedwait(&getq->cond, stgd_lock, &then);
 			/* Check again for !no_work as multiple threads may be
 			 * waiting on this condition and another may set the
@@ -5931,8 +5932,10 @@ static struct work *hash_pop(void)
 				no_work = true;
 				applog(LOG_WARNING, "Waiting for work to be available from pools.");
 			}
-		} else
+		} else {
+			pthread_cond_signal(&gws_cond);
 			pthread_cond_wait(&getq->cond, stgd_lock);
+		}
 	}
 
 	if (no_work) {