From a24071ae913b223487df78859c8d830f9e69f580 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 28 Aug 2024 16:42:05 +0200 Subject: Second commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- createbarriergroup.c | 59 ---------------------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 createbarriergroup.c (limited to 'createbarriergroup.c') diff --git a/createbarriergroup.c b/createbarriergroup.c deleted file mode 100644 index 694032b..0000000 --- a/createbarriergroup.c +++ /dev/null @@ -1,59 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "common.h" - - -#ifndef SINGLE_THREADED -static void * -slaveloop(void *thread_param) -{ - struct thread_data *data = thread_param; - void (*action)(struct algorithm *, struct global_data *); - size_t index; - - for (;;) { - barrierwait(&data->group->barrier); - action = data->global->action; - if (!action) - break; - for (index = data->index; index < data->global->nalgorithms; index += data->group->nthreads + 1U) - (*action)(&data->global->algorithms[index], data->global); - barrierwait(&data->group->barrier); - } - - return NULL; -} -#endif - - -void -createbarriergroup(struct barrier_group *group_out, size_t count, struct global_data *global) -{ -#ifndef SINGLE_THREADED - size_t i; - - count = MAX(count, 64); - - group_out->nthreads = count - 1U; - group_out->threads = NULL; - if (!group_out->nthreads) - return; - group_out->threads = ecalloc(group_out->nthreads, sizeof(*group_out->threads)); - - if ((errno = pthread_barrier_init(&group_out->barrier, NULL, (unsigned)count))) - eprintf("pthread_barrier_init NULL %u:", (unsigned)count); - - for (i = 0; i < group_out->nthreads; i++) { - group_out->threads[i].group = group_out; - group_out->threads[i].global = global; - group_out->threads[i].index = i + 1U; - errno = pthread_create(&group_out->threads[i].thread, NULL, &slaveloop, &group_out->threads[i]); - if (errno) - eprintf("pthread_create NULL:"); - } -#else - group_out->nthreads = 0U; - group_out->threads = NULL; - (void) global; - (void) count; -#endif -} -- cgit v1.2.3-70-g09d2