summaryrefslogtreecommitdiff
path: root/src/engine/threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/threads.c')
-rw-r--r--src/engine/threads.c16
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;