Fix the extra work queued every longpoll by queueing it all in the beginning.
diff --git a/main.c b/main.c
index f826cb6..e931899 100644
--- a/main.c
+++ b/main.c
@@ -1218,17 +1218,8 @@ static void restart_threads(void)
/* Discard old queued requests and get new ones */
flush_requests();
- /* Queue extra requests for each worker thread since they'll all need
- * new work. Each worker will set their "requested" flag to true
- * should they receive a .restart */
- for (i = 0; i < opt_n_threads + gpu_threads; i++) {
- if (unlikely(!queue_request())) {
- applog(LOG_ERR, "Failed to queue requests in flush_requests");
- kill_work();
- return;
- }
+ for (i = 0; i < opt_n_threads + gpu_threads; i++)
work_restart[i].restart = 1;
- }
}
static void *longpoll_thread(void *userdata)
@@ -1662,8 +1653,8 @@ int main (int argc, char *argv[])
}
}
- /* Put the extra work in the queue */
- for (i = 0; i < opt_queue; i++) {
+ /* Put enough work in the queue */
+ for (i = 0; i < opt_queue + opt_n_threads + gpu_threads; i++) {
if (unlikely(!queue_request())) {
applog(LOG_ERR, "Failed to queue_request in main");
return 1;