From: Laurent MAZET Date: Mon, 20 Oct 2025 15:57:35 +0000 (+0200) Subject: correct mutext test X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=64a216037b7a575909cd049e93e4d8555c033da1;p=benchmarks.git correct mutext test --- diff --git a/mutex.c b/mutex.c index a73e63a..c399505 100644 --- a/mutex.c +++ b/mutex.c @@ -19,6 +19,7 @@ void (*usage_ext) (FILE *) = NULL; int (*parse_arg_ext) (char *) = NULL; pthread_barrier_t *barrier = NULL; +pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t test = PTHREAD_MUTEX_INITIALIZER; volatile int shared_flag = 0; ts_t ts1, ts2; @@ -32,15 +33,23 @@ void *ping (__attribute__((unused)) void *arg) { pthread_barrier_wait (barrier); + printf ("Sending ping...\n"); + + pthread_mutex_lock (&test); + usleep (TIMER); + + for (int i = 0; i < nb_measurements; i++) { + + pthread_mutex_lock (&mutex); + pthread_mutex_unlock (&mutex); + + usleep (TIMER / 2); - while (try < nb_measurements) { - pthread_mutex_lock (&test); - usleep (TIMER); - shared_flag = 1; - sys_timestamp (&ts1); pthread_mutex_unlock (&test); - //shared_flag = 0; - usleep (TIMER); + sys_timestamp (&ts1); + + usleep (TIMER/2); + pthread_mutex_lock (&test); } pthread_exit (NULL); @@ -51,19 +60,15 @@ void *pong (__attribute__((unused)) void *arg) pthread_barrier_wait (barrier); - while (try < nb_measurements) { - ts_t ts; - sys_timestamp (&ts); + for (int i = 0; i < nb_measurements; i++) { + + pthread_mutex_lock (&mutex); + usleep (TIMER); + pthread_mutex_unlock (&mutex); + pthread_mutex_lock (&test); - if (shared_flag) { - sys_timestamp (&ts2); - if (diff_timestamp (&ts2, &ts) < (9 * TIMER / 10)) { - nbtoofast++; - } else { - deltas[try++] = diff_timestamp (&ts2, &ts1); - } - shared_flag = 0; - } + sys_timestamp (&ts2); + deltas[i] = diff_timestamp (&ts2, &ts1); pthread_mutex_unlock (&test); }