mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 20:44:19 +00:00
Queue and pop precisely the same amount of work in flush_request to ensure all work is cleared and there isn't an uneven add/remove possible.
This commit is contained in:
parent
af6e7937ca
commit
f90e73af51
19
main.c
19
main.c
@ -719,27 +719,24 @@ static bool discard_request(void)
|
||||
|
||||
static void flush_requests(void)
|
||||
{
|
||||
unsigned int i;
|
||||
int i, extra;
|
||||
|
||||
/* Queue a whole batch of new requests */
|
||||
for (i = 0; i < opt_queue; i++) {
|
||||
extra = requests_queued();
|
||||
for (i = 0; i < extra; i++) {
|
||||
/* Queue a whole batch of new requests */
|
||||
if (unlikely(!queue_request())) {
|
||||
applog(LOG_ERR, "Failed to queue requests in flush_requests");
|
||||
kill_work();
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pop off the old requests. Cancelling the requests would be better
|
||||
* but is tricky */
|
||||
while (requests_queued() > opt_queue) {
|
||||
/* Pop off the old requests. Cancelling the requests would be better
|
||||
* but is tricky */
|
||||
if (unlikely(!discard_request())) {
|
||||
applog(LOG_ERR, "Failed to discard requests in flush_requests");
|
||||
kill_work();
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static bool get_work(struct work *work, bool queued)
|
||||
|
Loading…
x
Reference in New Issue
Block a user