diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-09-07 21:13:24 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-09-07 21:13:24 +0000 |
| commit | 3b086d616a9090f714c90c7985f10c5dc4bd5733 (patch) | |
| tree | 8137021d446260adfc5eacd753f9e42ab5281e7d /src/engine/e_jobs.h | |
| parent | 6a4e17ea8520e9eb3a88ce15a9e337679d631775 (diff) | |
| download | zcatch-3b086d616a9090f714c90c7985f10c5dc4bd5733.tar.gz zcatch-3b086d616a9090f714c90c7985f10c5dc4bd5733.zip | |
fixed threaded jobs
Diffstat (limited to 'src/engine/e_jobs.h')
| -rw-r--r-- | src/engine/e_jobs.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/engine/e_jobs.h b/src/engine/e_jobs.h new file mode 100644 index 00000000..2b04a1e4 --- /dev/null +++ b/src/engine/e_jobs.h @@ -0,0 +1,33 @@ + +typedef int (*JOBFUNC)(void *data); + +typedef struct JOB +{ + struct JOBPOOL *pool; + struct JOB *prev; + struct JOB *next; + volatile int status; + volatile int result; + JOBFUNC func; + void *func_data; +} JOB; + +typedef struct JOBPOOL +{ + LOCK lock; + JOB *first_job; + JOB *last_job; +} JOBPOOL; + +enum +{ + JOBSTATUS_PENDING=0, + JOBSTATUS_RUNNING, + JOBSTATUS_DONE + /*JOBSTATUS_ABORTING,*/ + /*JOBSTATUS_ABORTED,*/ +}; + +int jobs_initpool(JOBPOOL *pool, int num_threads); +int jobs_add(JOBPOOL *pool, JOB *job, JOBFUNC func, void *data); +int jobs_status(JOB *job); |