updated test passes
fixed problem with copying lists
This commit is contained in:
parent
75696986e4
commit
414b8b99c3
3 changed files with 11 additions and 7 deletions
|
|
@ -68,11 +68,9 @@ lumiera_threadpool_acquire_thread(enum lumiera_thread_class kind,
|
|||
struct nobug_flag* flag)
|
||||
{
|
||||
// TODO: do we need to check that index 'kind' is within range?
|
||||
llist pool = threadpool.kind[kind].pool;
|
||||
// TODO: do we need to check that we get a valid list?
|
||||
|
||||
// TODO: do proper locking when manipulating the list
|
||||
if (llist_is_empty (&pool))
|
||||
if (llist_is_empty (&threadpool.kind[kind].pool))
|
||||
{
|
||||
return lumiera_thread_new (kind, NULL, purpose, flag);
|
||||
}
|
||||
|
|
@ -80,7 +78,7 @@ lumiera_threadpool_acquire_thread(enum lumiera_thread_class kind,
|
|||
{
|
||||
// use an existing thread, pick the first one
|
||||
// remove it from the pool's list
|
||||
return (LumieraThread)(llist_unlink(llist_head (&pool)));
|
||||
return (LumieraThread)(llist_unlink(llist_head (&threadpool.kind[kind].pool)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,12 @@ struct lumiera_thread_mockup
|
|||
LumieraReccondition finished;
|
||||
};
|
||||
|
||||
static void* thread_loop (void* arg)
|
||||
{
|
||||
return arg;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void* pthread_runner (void* thread)
|
||||
{
|
||||
pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL);
|
||||
|
|
@ -70,6 +76,7 @@ static void* pthread_runner (void* thread)
|
|||
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static pthread_once_t attr_once = PTHREAD_ONCE_INIT;
|
||||
static pthread_attr_t attrs;
|
||||
|
|
@ -164,8 +171,7 @@ lumiera_thread_new (enum lumiera_thread_class kind,
|
|||
self->kind = kind;
|
||||
self->state = LUMIERA_THREADSTATE_IDLE;
|
||||
|
||||
printf("creating a thread\n");
|
||||
int error = pthread_create (&self->id, &attrs, &pthread_runner, self);
|
||||
int error = pthread_create (&self->id, &attrs, &thread_loop, self);
|
||||
|
||||
if (error)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ TEST ("basic-acquire-release")
|
|||
//ECHO("thread 1 state=%d", t1->state);
|
||||
CHECK(LUMIERA_THREADSTATE_IDLE == t1->state);
|
||||
//ECHO("thread 2 kind=%d", t2->kind);
|
||||
// CHECK(LUMIERA_THREAD_IDLE == t2->kind);
|
||||
CHECK(LUMIERA_THREAD_IDLE == t2->kind);
|
||||
//ECHO("thread 2 state=%d", t2->state);
|
||||
CHECK(LUMIERA_THREADSTATE_IDLE == t2->state);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue