diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-03-23 20:34:26 +0100 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-03-23 20:34:26 +0100 |
| commit | 876b2f8e699c1b24ae5e4f98a4affe9fa1a8650f (patch) | |
| tree | e43eace54529dbc83994bc1404dd51ed08a25c42 /src/server | |
| parent | 36dabafe242e8dc290ff76885c43c773b6d20b28 (diff) | |
| download | BT-Programming-Assignment-876b2f8e699c1b24ae5e4f98a4affe9fa1a8650f.tar.gz BT-Programming-Assignment-876b2f8e699c1b24ae5e4f98a4affe9fa1a8650f.zip | |
add a request status, so that multiple clients cannot overwrite requests from other clients
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/shared_memory_server.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/server/shared_memory_server.h b/src/server/shared_memory_server.h index d4be69f..e8e5c38 100644 --- a/src/server/shared_memory_server.h +++ b/src/server/shared_memory_server.h @@ -34,7 +34,6 @@ public: mmap(0, sizeof(SharedMemory), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0); shared_memory->tail = shared_memory->head = 0; - shared_memory->full = false; pthread_mutexattr_t mutex_attr; pthread_condattr_t cond_attr; @@ -74,7 +73,7 @@ public: while (true) { pthread_mutex_lock(&shared_memory->mutex); - if (shared_memory->tail == shared_memory->head && !shared_memory->full) { + if (shared_memory->request[shared_memory->head].status != SENT) { pthread_cond_wait(&shared_memory->cond_var, &shared_memory->mutex); } @@ -140,8 +139,8 @@ public: default: break; } + shared_memory->request[shared_memory->head].status = PROCESSED; shared_memory->head = (1 + shared_memory->head) % QUEUE_SIZE; - shared_memory->full = false; pthread_cond_signal(&shared_memory->cond_var); pthread_mutex_unlock(&shared_memory->mutex); } |