From 699d1b9ed4166dbaed735ecb58e9b17d6a51fdc0 Mon Sep 17 00:00:00 2001 From: Kranklyboy Date: Thu, 7 Jun 2018 12:31:25 +0200 Subject: [PATCH] Read whole solutions from shared memory --- supervisor.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/supervisor.c b/supervisor.c index db7b91c..8cf6595 100644 --- a/supervisor.c +++ b/supervisor.c @@ -36,18 +36,24 @@ void initCircBuf() return; } -int getItem(sem_t sUsedSpace, sem_t sFreeSpace) +void getSolution(sem_t sUsedSpace, sem_t sFreeSpace, int *solution) { - sem_wait(&sUsedSpace); + if (shared->head == -1) { + sem_wait(&sUsedSpace); + shared->head = (shared->head + 1) % MAX_ITEMS; + sem_post(&sFreeSpace); + } else { + int i = 0; + while (shared->head != -1) { + sem_wait(&sUsedSpace); + solution[i] = shared->head; + shared->head = (shared->head + 1) % MAX_ITEMS; + sem_post(&sFreeSpace); + i++; + } + } - int value; - - value = shared->data[shared->head]; - shared->head = (shared->head + 1) % MAX_ITEMS; - - sem_post(&sFreeSpace); - - return value; + // Code for testing wether new solution is better than old } int main(int argc, char *argv[])