1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-22 20:44:19 +00:00

Stage extra work when the primary pool is a getwork pool without rolltime.

This commit is contained in:
Con Kolivas 2012-12-08 21:27:40 +11:00
parent 24de9b8655
commit 927730ae2c

View File

@ -3052,14 +3052,19 @@ static void *getwork_thread(void __maybe_unused *userdata)
RenameThread("getwork_sched");
while (42) {
int ts, max_staged = opt_queue;
struct pool *pool, *cp;
bool lagging = false;
struct curl_ent *ce;
struct work *work;
int ts;
cp = current_pool();
/* If the primary pool is a getwork pool and cannot roll work,
* try to stage one extra work per mining thread */
if (!cp->has_stratum && !cp->has_gbt && !staged_rollable)
max_staged += mining_threads;
mutex_lock(stgd_lock);
ts = __total_staged();
@ -3067,12 +3072,13 @@ static void *getwork_thread(void __maybe_unused *userdata)
lagging = true;
/* Wait until hash_pop tells us we need to create more work */
if (ts > opt_queue) {
if (ts > max_staged) {
pthread_cond_wait(&gws_cond, stgd_lock);
ts = __total_staged();
}
mutex_unlock(stgd_lock);
if (ts > opt_queue)
if (ts > max_staged)
continue;
work = make_work();