Uses different pass count for different parallel queue test cases
[libcds.git] / test / stress / queue / std_queue.h
index 344923410141a415a92d4db5dc43e2b7cf9d29a1..b2079323b81ece45ce3fc0856a0a0f2df99af527 100644 (file)
@@ -1,7 +1,7 @@
 /*
     This file is a part of libcds - Concurrent Data Structures library
 
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
 
     Source code repo: http://github.com/khizmax/libcds/
     Download: http://sourceforge.net/projects/libcds/files/
@@ -42,7 +42,7 @@ namespace queue {
     class StdQueue: public std::queue<T, Container >
     {
         typedef std::queue<T, Container >   base_class;
-        Lock    m_Locker;
+        mutable Lock m_Locker;
 
     public:
         bool enqueue( const T& data )
@@ -52,7 +52,12 @@ namespace queue {
             base_class::push( data );
             return true;
         }
-        bool push( const T& data )  { return enqueue( data ) ; }
+
+        bool push( const T& data )
+        {
+            return enqueue( data );
+        }
+
         bool dequeue( T& data )
         {
             std::unique_lock<Lock> a(m_Locker);
@@ -63,7 +68,23 @@ namespace queue {
             base_class::pop();
             return true;
         }
-        bool pop( T& data )         { return dequeue( data ) ; }
+
+        bool pop( T& data )
+        {
+            return dequeue( data );
+        }
+
+        bool empty() const
+        {
+            std::unique_lock<Lock> a( m_Locker );
+            return base_class::empty();
+        }
+
+        size_t size() const
+        {
+            std::unique_lock<Lock> a( m_Locker );
+            return base_class::size();
+        }
 
         cds::opt::none statistics() const
         {