refactoring

This commit is contained in:
Devaev Maxim
2021-03-30 10:11:14 +03:00
parent 3c7075d0d2
commit 1f186a0afe
3 changed files with 14 additions and 10 deletions

View File

@@ -36,7 +36,7 @@ static const struct {
};
static void *_worker_job_init(worker_s *wr, void *v_enc);
static void *_worker_job_init(void *v_enc);
static void _worker_job_destroy(void *v_job);
static bool _worker_run_job(worker_s *wr);

View File

@@ -28,9 +28,9 @@ static void *_worker_thread(void *v_worker);
workers_pool_s *workers_pool_init(
const char *name, const char *wr_prefix, unsigned n_workers, long double desired_interval,
void *(*job_init)(worker_s *wr, void *arg), void *job_init_arg,
void (*job_destroy)(void *),
bool (*run_job)(worker_s *)) {
workers_pool_job_init_f job_init, void *job_init_arg,
workers_pool_job_destroy_f job_destroy,
workers_pool_run_job_f run_job) {
LOG_INFO("Creating pool %s with %u workers ...", name, n_workers);
@@ -60,7 +60,7 @@ workers_pool_s *workers_pool_init(
A_COND_INIT(&WR(has_job_cond));
WR(pool) = pool;
WR(job) = job_init(&pool->workers[number], job_init_arg);
WR(job) = job_init(job_init_arg);
A_THREAD_CREATE(&WR(tid), _worker_thread, (void *)&(pool->workers[number]));
pool->free_workers += 1;

View File

@@ -55,12 +55,16 @@ typedef struct worker_sx {
struct workers_pool_sx *pool;
} worker_s;
typedef void *(*workers_pool_job_init_f)(void *arg);
typedef void (*workers_pool_job_destroy_f)(void *job);
typedef bool (*workers_pool_run_job_f)(worker_s *wr);
typedef struct workers_pool_sx {
const char *name;
long double desired_interval;
bool (*run_job)(worker_s *wr);
void (*job_destroy)(void *job);
workers_pool_job_destroy_f job_destroy;
workers_pool_run_job_f run_job;
unsigned n_workers;
worker_s *workers;
@@ -79,9 +83,9 @@ typedef struct workers_pool_sx {
workers_pool_s *workers_pool_init(
const char *name, const char *wr_prefix, unsigned n_workers, long double desired_interval,
void *(*job_init)(void *arg), void *job_init_arg,
void (*job_destroy)(void *job),
bool (*run_job)(worker_s *));
workers_pool_job_init_f job_init, void *job_init_arg,
workers_pool_job_destroy_f job_destroy,
workers_pool_run_job_f run_job);
void workers_pool_destroy(workers_pool_s *pool);