Fixes misc test cases
[libcds.git] / test / stress / misc / mcslock_driver.cpp
index 1435e97..2a2091b 100644 (file)
@@ -27,11 +27,10 @@ protected:
 
   static void Thread() {
     cds_others::mcs_mutex::guard g(my_mutex);
 
   static void Thread() {
     cds_others::mcs_mutex::guard g(my_mutex);
-    x = 1;
     my_mutex->unlock(&g);
     for (ullong i = 0; i < s_nMCSLockPassCount; i++) {
       my_mutex->lock(&g);
     my_mutex->unlock(&g);
     for (ullong i = 0; i < s_nMCSLockPassCount; i++) {
       my_mutex->lock(&g);
-      x = i;
+      x++;
       my_mutex->unlock(&g);
     }
     my_mutex->lock(&g);
       my_mutex->unlock(&g);
     }
     my_mutex->lock(&g);
@@ -43,14 +42,17 @@ cds_others::mcs_mutex *MCSLockTest::my_mutex;
 
 TEST_F(MCSLockTest, BasicLockUnlock) {
   my_mutex = new cds_others::mcs_mutex();
 
 TEST_F(MCSLockTest, BasicLockUnlock) {
   my_mutex = new cds_others::mcs_mutex();
+  x = 0;
   std::thread *threads = new std::thread[s_nMCSLockThreadCount];
   for (int i = 0; i < s_nMCSLockThreadCount; i++) {
     threads[i] = std::thread(Thread);
   }
   std::thread *threads = new std::thread[s_nMCSLockThreadCount];
   for (int i = 0; i < s_nMCSLockThreadCount; i++) {
     threads[i] = std::thread(Thread);
   }
-
   for (int i = 0; i < s_nMCSLockThreadCount; i++) {
     threads[i].join();
   }
   for (int i = 0; i < s_nMCSLockThreadCount; i++) {
     threads[i].join();
   }
+  if (x != s_nMCSLockPassCount * s_nMCSLockThreadCount) {
+    cout << "MCS lock incorrect\n";
+  }
 }
 
 } // namespace
 }
 
 } // namespace