From 292eb88bef1b8470dd885882ec738d6a60212822 Mon Sep 17 00:00:00 2001 From: Torsten Merz <mer114@moon-ph.nexus.csiro.au> Date: Thu, 26 Sep 2019 11:12:07 +1000 Subject: [PATCH] changed locking mechanism of nrt task dispatcher --- smi/src/taskdisp_nrt.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/smi/src/taskdisp_nrt.c b/smi/src/taskdisp_nrt.c index a626575..96ad2f9 100644 --- a/smi/src/taskdisp_nrt.c +++ b/smi/src/taskdisp_nrt.c @@ -238,7 +238,10 @@ usleep(10000); //printf("aaaaaa->%d",__sync_fetch_and_add(&(shm->taskStateSysVar[i].exit),0)); numberOfSMIIterations=__sync_fetch_and_add(&(shm->numberOfSMIIterations),0); - while (numberOfSMIIterations==__sync_fetch_and_add(&(shm->numberOfSMIIterations),0) && shm->run!=0) + while ( + __sync_fetch_and_add(&(shm->taskStateSysVar[i].exit),0)==ATOMIC_UNLOCKED + && + numberOfSMIIterations+2>__sync_fetch_and_add(&(shm->numberOfSMIIterations),0) && shm->run!=0) { usleep(STD_SLEEP); } -- GitLab