From 2924428bdf4b17b844e7461f4f0076c257923789 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Fri, 11 Jun 2021 14:07:13 +0200 Subject: [PATCH] Local worker --- include/localworker.h | 17 +++++++++++++++++ src/localworker.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/include/localworker.h b/include/localworker.h index 3ba3250..c491b26 100644 --- a/include/localworker.h +++ b/include/localworker.h @@ -23,4 +23,21 @@ #include "../include/base.h" #endif +pthread_t *WorkerInit(SchedulerParams_t *parameters); +// -------------------------------------------------------------------------- // +// Scheduler destructor function // +// -------------------------------------------------------------------------- // +static inline int WorkerDestroy(pthread_t *schedThread) +{ + free(schedThread); + return 0; +} + +// -------------------------------------------------------------------------- // +// Scheduler wait function // +// -------------------------------------------------------------------------- // +static inline void WorkerWait(pthread_t *schedThread) +{ + pthread_join(*schedThread, NULL); +} diff --git a/src/localworker.c b/src/localworker.c index ccbe6c1..c57f463 100644 --- a/src/localworker.c +++ b/src/localworker.c @@ -18,3 +18,38 @@ // You should have received a copy of the GNU Affero General Public License // // along with this program. If not, see . // //=-------------------------------------------------------------------------=// + +#include "../include/base.h" + +static void *LittleWorker(void *parameters); + +/* -------------------------------------------------------------------------- */ + +// -------------------------------------------------------------------------- // +// Scheduler init function // +// -------------------------------------------------------------------------- // +pthread_t *WorkerInit(SchedulerParams_t *parameters) +{ + parameters->id = (pthread_t*) malloc(sizeof(pthread_t)); + pthread_create(parameters->id, NULL, LittleWorker, parameters); + return parameters->id; +} + +// -------------------------------------------------------------------------- // +// Scheduler thread main function // +// -------------------------------------------------------------------------- // +static void *LittleWorker(void *params) +{ + SchedulerParams_t *parameters = (SchedulerParams_t*) params; + int a = 4; + + + for (int i = 0; i < 45000; i++) { + for (int j = i; j < 45000; j++) { + a = (a + (long)parameters->id) * i * j; + } + } + + printf("thread %d\n", a); + return NULL; +}