]> gitweb.hhaalo.de Git - ringbuffer.git/commitdiff
add: logic for wait threads
authorBastian Dehn <hhaalo@arcor.de>
Sun, 24 Apr 2022 16:08:43 +0000 (18:08 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 24 Apr 2022 16:08:43 +0000 (18:08 +0200)
demo.c

diff --git a/demo.c b/demo.c
index bad3e2e253a4c194dab279c06e49da2df4275fa7..85c9f364f26d113d5e77b2e8166556e36f5116bf 100644 (file)
--- a/demo.c
+++ b/demo.c
@@ -1,9 +1,24 @@
 #include <stdio.h>
 #include <pthread.h>
+#include <unistd.h>
 #include "ringbuffer.h"
 
 #define maxvalues 60
 
+void waitSrcBuffer(ringbuffer *buf)
+{
+       while(buf->full) {
+               sleep(1);
+       }
+}
+
+void waitDstBuffer(ringbuffer *buf)
+{
+       while(buf->count == 0 && !buf->finish) {
+               sleep(1);
+       }
+}
+
 void *readValues(void *buf)
 {
        ringbuffer *buffer = (ringbuffer*) buf;
@@ -14,7 +29,10 @@ void *readValues(void *buf)
                                buffer->tail,
                                buffer->count,
                                i);
+               waitSrcBuffer(buffer);
        }
+
+       buffer->finish = true;
 }
 
 void *outValues(void *buf)
@@ -27,6 +45,7 @@ void *outValues(void *buf)
                                buffer->tail,
                                buffer->count,
                                getValue(buffer));
+               waitDstBuffer(buffer);
        }
 }