lasp/test/test_workers.c

80 lines
1.5 KiB
C

// test_bf.c
//
// Author: J.A. de Jong -ASCEE
//
// Description:
//
//////////////////////////////////////////////////////////////////////
#include "lasp_config.h"
#include "lasp_tracer.h"
#include "lasp_assert.h"
#include <unistd.h>
#ifdef LASP_PARALLEL
#include "lasp_worker.h"
#include "lasp_mq.h"
static void* walloc(void*);
static int worker(void*,void*);
static void wfree(void*);
#endif // LASP_PARALLEL
int main() {
fsTRACE(15);
iVARTRACE(15,getTracerLevel());
#ifdef LASP_PARALLEL
us njobs = 4;
JobQueue* jq = JobQueue_alloc(njobs);
dbgassert(jq,NULLPTRDEREF);
Workers* w = Workers_create(njobs,
jq,
walloc,
worker,
wfree,
(void*) 101);
dbgassert(jq,NULLPTRDEREF);
for(us i=0; i< njobs; i++) {
iVARTRACE(15,i);
JobQueue_push(jq,(void*) i+1);
}
JobQueue_wait_alldone(jq);
Workers_free(w);
JobQueue_free(jq);
#endif // LASP_PARALLEL
return 0;
}
#ifdef LASP_PARALLEL
static void* walloc(void* data) {
TRACE(15,"WALLOC");
uVARTRACE(15,(us) data);
return (void*) 1;
}
static int worker(void* w_data,void* tj) {
TRACE(15,"worker");
sleep(4);
return 0;
}
static void wfree(void* w_data) {
TRACE(15,"wfree");
}
#endif // LASP_PARALLEL
//////////////////////////////////////////////////////////////////////