X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=test_perthreadlock.c;h=3684975eebf7c85312cd3a6a2322f88af03c022c;hb=59d5a40624428364374c306409979155beddfaac;hp=078e6594a19faeddd068a9f49e545992b1553505;hpb=78efb485e9baa0408e8d96932a68784bc19e59a5;p=urcu.git diff --git a/test_perthreadlock.c b/test_perthreadlock.c index 078e659..3684975 100644 --- a/test_perthreadlock.c +++ b/test_perthreadlock.c @@ -69,7 +69,7 @@ static volatile int test_go, test_stop; static int wdelay; -static struct test_array test_array = { 8 }; +static volatile struct test_array test_array = { 8 }; static unsigned long duration; @@ -134,7 +134,7 @@ void *thr_reader(void *data) assert(test_array.a == 8); pthread_mutex_unlock(&per_thread_lock[tidx].lock); nr_reads++; - if (!test_duration_read()) + if (unlikely(!test_duration_read())) break; } @@ -162,14 +162,15 @@ void *thr_writer(void *data) for (tidx = 0; tidx < nr_readers; tidx++) { pthread_mutex_lock(&per_thread_lock[tidx].lock); } + test_array.a = 0; test_array.a = 8; for (tidx = nr_readers - 1; tidx >= 0; tidx--) { pthread_mutex_unlock(&per_thread_lock[tidx].lock); } nr_writes++; - if (!test_duration_write()) + if (unlikely(!test_duration_write())) break; - if (wdelay) + if (unlikely(wdelay)) usleep(wdelay); }