@@ -16,6 +16,7 @@ bool task3RunningPtrCheck = false;
1616bool  allGood = false ;
1717
1818int  runCount1, runCount2, runCount3;
19+ int  captureCount2, captureCount3;
1920
2021test (testGettingRunningTaskAlwaysCorrect) {
2122    task1RunningPtrCheck = false ;
@@ -44,7 +45,10 @@ test(testGettingRunningTaskAlwaysCorrect) {
4445
4546    serdebugF (" Scheduled running task check" 
4647
48+     unsigned  long  then = millis ();
4749    taskManager.yieldForMicros (millisToMicros (100 ));
50+     int  diff = int (millis () - then);
51+     assertMore (diff, 90 );
4852
4953    serdebugF (" Finished running task check, asserting." 
5054
@@ -56,43 +60,44 @@ test(testGettingRunningTaskAlwaysCorrect) {
5660
5761test (testReentrantLock) {
5862    taskManager.reset ();
59-     task1RunningPtrCheck = false ;
60-     task2RunningPtrCheck = false ;
61-     task3RunningPtrCheck = false ;
63+ 
6264    allGood = true ;
6365    runCount1 = runCount2 = runCount3 = 0 ;
6466
65-     runTaskId1 = taskManager.scheduleFixedRate (1 , [] {
66-         TaskMgrLock locker (testLock);
67- 
68-         task1RunningPtrCheck = true ;
69-         task2RunningPtrCheck = false ;
70-         task3RunningPtrCheck = false ;
71-         taskManager.yieldForMicros (1000 );
72-         if (task2RunningPtrCheck || task3RunningPtrCheck) {
73-             allGood = false ;
67+     runTaskId1 = taskManager.scheduleFixedRate (10 , [] {
68+         if (testLock.tryLock ()) {
69+             if (captureCount3 != runCount3 || captureCount2 != runCount2) {
70+                 allGood = false ;
71+             }
72+             testLock.unlock ();
73+         }
74+         else  {
75+             testLock.lock ();
76+             captureCount2 = runCount2;
77+             captureCount3 = runCount3;
7478        }
7579        runCount1++;
76-     });
80+     }, TIME_MILLIS );
7781
7882    runTaskId2 = taskManager.scheduleFixedRate (100 , [] {
7983        TaskMgrLock locker (testLock);
80-         task2RunningPtrCheck = true ;
8184        runCount2++;
8285    }, TIME_MICROS);
8386
8487    taskManager.scheduleFixedRate (50 , [] {
8588        TaskMgrLock locker (testLock);
86-         task3RunningPtrCheck = true ;
8789        runCount3++;
8890    }, TIME_MICROS);
8991
90-     taskManager.yieldForMicros (millisToMicros (1000 ));
92+     while (runCount1 < 10  || testLock.isLocked ()) {
93+         taskManager.yieldForMicros (100 );
94+     }
9195
9296    assertTrue (allGood);
9397    assertTrue (runTaskId1 != TASKMGR_INVALIDID);
9498    assertTrue (runTaskId2 != TASKMGR_INVALIDID);
95-     assertMore (runCount1, 10000 );
96-     assertMore (runCount2, 10000 );
97-     assertMore (runCount3, 10000 );
99+     assertMore (runCount1, 9 );
100+     assertLess (runCount1, 12 );
101+     assertMore (runCount2, 200 );
102+     assertMore (runCount3, 200 );
98103}
0 commit comments