mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-27 23:14:21 +00:00
Use control_lock to protect thr->pth for thread creation/destruction.
This commit is contained in:
parent
59293a37d6
commit
b69aa23470
1
miner.h
1
miner.h
@ -453,6 +453,7 @@ extern int total_getworks, total_stale, total_discarded;
|
|||||||
extern unsigned int local_work;
|
extern unsigned int local_work;
|
||||||
extern unsigned int total_go, total_ro;
|
extern unsigned int total_go, total_ro;
|
||||||
extern int opt_log_interval;
|
extern int opt_log_interval;
|
||||||
|
extern pthread_mutex_t control_lock;
|
||||||
|
|
||||||
#ifdef HAVE_OPENCL
|
#ifdef HAVE_OPENCL
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
6
util.c
6
util.c
@ -669,7 +669,9 @@ int thr_info_create(struct thr_info *thr, pthread_attr_t *attr, void *(*start) (
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
mutex_lock(&control_lock);
|
||||||
ret = pthread_create(&thr->pth, attr, start, arg);
|
ret = pthread_create(&thr->pth, attr, start, arg);
|
||||||
|
mutex_unlock(&control_lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,11 +682,15 @@ void thr_info_cancel(struct thr_info *thr)
|
|||||||
|
|
||||||
if (thr->q)
|
if (thr->q)
|
||||||
tq_freeze(thr->q);
|
tq_freeze(thr->q);
|
||||||
|
|
||||||
|
/* control_lock protects thr->pth */
|
||||||
|
mutex_lock(&control_lock);
|
||||||
if (thr->pth) {
|
if (thr->pth) {
|
||||||
if (!pthread_cancel(thr->pth))
|
if (!pthread_cancel(thr->pth))
|
||||||
pthread_join(thr->pth, NULL);
|
pthread_join(thr->pth, NULL);
|
||||||
thr->pth = 0L;
|
thr->pth = 0L;
|
||||||
}
|
}
|
||||||
|
mutex_unlock(&control_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get_dondata(char **url, char **userpass)
|
bool get_dondata(char **url, char **userpass)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user