diff options
Diffstat (limited to 'src/engine/threads.c')
| -rw-r--r-- | src/engine/threads.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/engine/threads.c b/src/engine/threads.c index 5afe155..541efb1 100644 --- a/src/engine/threads.c +++ b/src/engine/threads.c @@ -48,7 +48,7 @@ void threads_go(struct threads *handler) { pthread_create( handler->threads + i, NULL, - engine_thread, + i == 0 ? root_thread : child_thread, handler->args + i ); } @@ -78,10 +78,22 @@ void threads_cleanup(struct threads *handler) { } void __threads_args_init( - struct thread_args* args, + thread_args_t* _args, struct threads *handler, int i ) { + if (i > 0) { + struct child_thread_args *args = _args; + atomic_init(&args->stop, 0); + atomic_init(&args->finished, 0); + args->id = i; + args->position = handler->position; + args->go_args = handler->go_args; + args->message = handler->engine_messages->data[i]; + return; + } + + struct root_thread_args *args = _args; atomic_init(&args->stop, 0); atomic_init(&args->finished, 0); args->id = i; |
