From 051a727caf660ad6781c381d4333d5a6516dca45 Mon Sep 17 00:00:00 2001 From: zenon Date: Fri, 8 Jun 2018 11:03:54 +0200 Subject: [PATCH] Write complete solution array to shared memory without any delimiters --- generator.c | 13 ++----------- supervisor.c | 14 ++++---------- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/generator.c b/generator.c index 761082c..8453f66 100644 --- a/generator.c +++ b/generator.c @@ -225,20 +225,11 @@ void putSolution(int *solution) { wait_sem(sWriteEnd); - if (solution[0] == -1) { + for (int i = 0; i < MAX_ITEMS; i++) { wait_sem(sFreeSpace); - shared->data[shared->tail] = -1; + shared->data[shared->tail] = solution[i]; shared->tail = (shared->tail + 1) % MAX_ITEMS; sem_post(sUsedSpace); - } else { - int i = 0; - while (solution[i] != -1) { - wait_sem(sFreeSpace); - shared->data[shared->tail] = solution[i]; - shared->tail = (shared->tail + 1) % MAX_ITEMS; - sem_post(sUsedSpace); - i++; - } } sem_post(sWriteEnd); diff --git a/supervisor.c b/supervisor.c index fa6fdeb..2c40f83 100644 --- a/supervisor.c +++ b/supervisor.c @@ -91,17 +91,11 @@ void getSolution(sem_t *sUsedSpace, sem_t *sFreeSpace) solution[i] = -1; } - if (shared->data[shared->head] == -1) { + for (int i = 0; i < MAX_ITEMS; i++) { + wait_sem(sUsedSpace); + solution[i] = shared->data[shared->head]; shared->head = (shared->head + 1) % MAX_ITEMS; - } else { - int i = 0; - while (shared->data[shared->head] != -1) { - wait_sem(sUsedSpace); - solution[i] = shared->data[shared->head]; - shared->head = (shared->head + 1) % MAX_ITEMS; - sem_post(sFreeSpace); - i++; - } + sem_post(sFreeSpace); } // Code for testing if new solution is better than old