summaryrefslogtreecommitdiff
path: root/tests/test01.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test01.c')
-rw-r--r--tests/test01.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/tests/test01.c b/tests/test01.c
index 198dac7..4c7919c 100644
--- a/tests/test01.c
+++ b/tests/test01.c
@@ -1,9 +1,9 @@
-#include "linen.h"
-
#include <stdio.h>
#include <stdlib.h>
-#include <unistd.h>
#include <time.h>
+#include <unistd.h>
+
+#include "linen.h"
#define NUM_THREADS 10
@@ -26,7 +26,8 @@ void* f(void* arg) {
void main() {
- printf("\x1B[1mTEST 01: threads print after random delay:\x1B[0m\n");
+ printf("\x1B[1mTEST 01: threads print after random delay "
+ "while getting joined consecutively:\x1B[0m\n");
/* Thread handles and arguments */
linen_thread_t ts[NUM_THREADS];
@@ -47,6 +48,15 @@ void main() {
}
}
- /* Wait for threads to finish */
- usleep(1200000);
+ /* Wait for each thread to finish in order, and print its argument.
+ * The first message only prints once thread #0 is done, and so on. */
+ for (int i = 0; i < NUM_THREADS; i++) {
+ useconds_t* pd;
+ int r = linen_thread_finish(ts[i], (void**)&pd);
+ if (r) {
+ printf(" Failed to join thread #%d with error %d\n", i, r);
+ } else {
+ printf(" Thread #%d slept for %dms\n", i, *pd / 1000);
+ }
+ }
}