properly initialize and de-initialize the thread condition variable
This commit is contained in:
parent
c4e1fdaf9a
commit
03fe6dd658
2 changed files with 1 additions and 12 deletions
|
|
@ -74,11 +74,9 @@ LumieraThread
|
||||||
lumiera_thread_run (enum lumiera_thread_class kind,
|
lumiera_thread_run (enum lumiera_thread_class kind,
|
||||||
void (*function)(void *),
|
void (*function)(void *),
|
||||||
void * arg,
|
void * arg,
|
||||||
LumieraReccondition finished,
|
|
||||||
const char* purpose,
|
const char* purpose,
|
||||||
struct nobug_flag* flag)
|
struct nobug_flag* flag)
|
||||||
{
|
{
|
||||||
(void)finished;
|
|
||||||
(void)function;
|
(void)function;
|
||||||
(void)arg;
|
(void)arg;
|
||||||
// ask the threadpool for a thread (it might create a new one)
|
// ask the threadpool for a thread (it might create a new one)
|
||||||
|
|
@ -101,7 +99,6 @@ lumiera_thread_run (enum lumiera_thread_class kind,
|
||||||
*/
|
*/
|
||||||
LumieraThread
|
LumieraThread
|
||||||
lumiera_thread_new (enum lumiera_thread_class kind,
|
lumiera_thread_new (enum lumiera_thread_class kind,
|
||||||
LumieraReccondition finished,
|
|
||||||
const char* purpose,
|
const char* purpose,
|
||||||
struct nobug_flag* flag,
|
struct nobug_flag* flag,
|
||||||
pthread_attr_t* attrs)
|
pthread_attr_t* attrs)
|
||||||
|
|
@ -112,12 +109,9 @@ lumiera_thread_new (enum lumiera_thread_class kind,
|
||||||
REQUIRE (kind < LUMIERA_THREADCLASS_COUNT, "invalid thread kind specified: %d", kind);
|
REQUIRE (kind < LUMIERA_THREADCLASS_COUNT, "invalid thread kind specified: %d", kind);
|
||||||
REQUIRE (attrs, "invalid pthread attributes structure passed");
|
REQUIRE (attrs, "invalid pthread attributes structure passed");
|
||||||
|
|
||||||
//REQUIRE (finished, "invalid finished flag passed");
|
|
||||||
|
|
||||||
|
|
||||||
LumieraThread self = lumiera_malloc (sizeof (*self));
|
LumieraThread self = lumiera_malloc (sizeof (*self));
|
||||||
llist_init (&self->node);
|
llist_init (&self->node);
|
||||||
self->finished = finished;
|
lumiera_reccondition_init (&self->finished, "thread-control-condition", flag);
|
||||||
self->kind = kind;
|
self->kind = kind;
|
||||||
self->state = LUMIERA_THREADSTATE_IDLE;
|
self->state = LUMIERA_THREADSTATE_IDLE;
|
||||||
|
|
||||||
|
|
@ -140,7 +134,6 @@ lumiera_thread_destroy (LumieraThread self)
|
||||||
|
|
||||||
// TODO: stop the pthread
|
// TODO: stop the pthread
|
||||||
llist_unlink (&self->node);
|
llist_unlink (&self->node);
|
||||||
//finished = NULL; // or free(finished)?
|
|
||||||
lumiera_reccondition_destroy (self->finished, &NOBUG_FLAG (threads));
|
lumiera_reccondition_destroy (self->finished, &NOBUG_FLAG (threads));
|
||||||
//kind = 0;
|
//kind = 0;
|
||||||
//state = 0;
|
//state = 0;
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,6 @@ struct lumiera_thread_struct
|
||||||
*/
|
*/
|
||||||
LumieraThread
|
LumieraThread
|
||||||
lumiera_thread_new (enum lumiera_thread_class kind,
|
lumiera_thread_new (enum lumiera_thread_class kind,
|
||||||
LumieraReccondition finished,
|
|
||||||
const char* purpose,
|
const char* purpose,
|
||||||
struct nobug_flag* flag,
|
struct nobug_flag* flag,
|
||||||
pthread_attr_t* attrs);
|
pthread_attr_t* attrs);
|
||||||
|
|
@ -169,8 +168,6 @@ lumiera_thread_delete (LumieraThread self);
|
||||||
* @param kind class of the thread to start
|
* @param kind class of the thread to start
|
||||||
* @param function pointer to a function to execute in a thread (returning void, not void* as in pthreads)
|
* @param function pointer to a function to execute in a thread (returning void, not void* as in pthreads)
|
||||||
* @param arg generic pointer passed to the thread
|
* @param arg generic pointer passed to the thread
|
||||||
* @param finished a condition variable to be broadcasted, if not NULL.
|
|
||||||
* The associated mutex should be locked at thread_run time already, else the signal can get lost.
|
|
||||||
* @param purpose descriptive name of this thread, used by NoBug
|
* @param purpose descriptive name of this thread, used by NoBug
|
||||||
* @param flag NoBug flag used for logging the thread startup and return
|
* @param flag NoBug flag used for logging the thread startup and return
|
||||||
*/
|
*/
|
||||||
|
|
@ -178,7 +175,6 @@ LumieraThread
|
||||||
lumiera_thread_run (enum lumiera_thread_class kind,
|
lumiera_thread_run (enum lumiera_thread_class kind,
|
||||||
void (*function)(void *),
|
void (*function)(void *),
|
||||||
void * arg,
|
void * arg,
|
||||||
LumieraReccondition finished,
|
|
||||||
const char* purpose,
|
const char* purpose,
|
||||||
struct nobug_flag* flag);
|
struct nobug_flag* flag);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue