fcpqueue_deque.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. // Copyright (c) 2006-2018 Maxim Khizhinsky
  2. //
  3. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. // file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #include "test_fcpqueue.h"
  6. #include <cds/container/fcpriority_queue.h>
  7. #include <deque>
  8. namespace cds_test {
  9. TEST_F( FCPQueue, deque )
  10. {
  11. typedef cds::container::FCPriorityQueue<
  12. value_type
  13. ,std::priority_queue<
  14. value_type
  15. ,std::deque<value_type>
  16. ,less
  17. >
  18. > pqueue_type;
  19. pqueue_type pq;
  20. test( pq );
  21. }
  22. TEST_F( FCPQueue, deque_stat )
  23. {
  24. typedef cds::container::FCPriorityQueue<
  25. value_type
  26. ,std::priority_queue<
  27. value_type
  28. ,std::deque<value_type>
  29. ,less
  30. >
  31. ,cds::container::fcpqueue::make_traits<
  32. cds::opt::stat< cds::container::fcpqueue::stat<> >
  33. >::type
  34. > pqueue_type;
  35. pqueue_type pq;
  36. test( pq );
  37. }
  38. TEST_F( FCPQueue, deque_stat_single_mutex_single_condvar )
  39. {
  40. typedef cds::container::FCPriorityQueue<
  41. value_type
  42. ,std::priority_queue<
  43. value_type
  44. ,std::deque<value_type>
  45. ,less
  46. >
  47. ,cds::container::fcpqueue::make_traits<
  48. cds::opt::stat< cds::container::fcpqueue::stat<> >
  49. , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<>>
  50. >::type
  51. > pqueue_type;
  52. pqueue_type pq;
  53. test( pq );
  54. }
  55. TEST_F( FCPQueue, deque_empty_wait_strategy )
  56. {
  57. typedef cds::container::FCPriorityQueue<
  58. value_type
  59. ,std::priority_queue<
  60. value_type
  61. ,std::deque<value_type>
  62. ,less
  63. >
  64. ,cds::container::fcpqueue::make_traits<
  65. cds::opt::stat< cds::container::fcpqueue::stat<> >
  66. , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::empty >
  67. >::type
  68. > pqueue_type;
  69. pqueue_type pq;
  70. test( pq );
  71. }
  72. TEST_F( FCPQueue, deque_single_mutex_multi_condvar )
  73. {
  74. typedef cds::container::FCPriorityQueue<
  75. value_type
  76. ,std::priority_queue<
  77. value_type
  78. ,std::deque<value_type>
  79. ,less
  80. >
  81. ,cds::container::fcpqueue::make_traits<
  82. cds::opt::stat< cds::container::fcpqueue::stat<> >
  83. , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_multi_condvar<2>>
  84. >::type
  85. > pqueue_type;
  86. pqueue_type pq;
  87. test( pq );
  88. }
  89. TEST_F( FCPQueue, deque_mutex )
  90. {
  91. typedef cds::container::FCPriorityQueue<
  92. value_type
  93. ,std::priority_queue<
  94. value_type
  95. ,std::deque<value_type>
  96. >
  97. ,cds::container::fcpqueue::make_traits<
  98. cds::opt::lock_type< std::mutex >
  99. >::type
  100. > pqueue_type;
  101. pqueue_type pq;
  102. test( pq );
  103. }
  104. TEST_F( FCPQueue, deque_multi_mutex_multi_condvar )
  105. {
  106. typedef cds::container::FCPriorityQueue<
  107. value_type
  108. ,std::priority_queue<
  109. value_type
  110. ,std::deque<value_type>
  111. >
  112. ,cds::container::fcpqueue::make_traits<
  113. cds::opt::lock_type< std::mutex >
  114. , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::multi_mutex_multi_condvar<1000>>
  115. >::type
  116. > pqueue_type;
  117. pqueue_type pq;
  118. test( pq );
  119. }
  120. } // namespace cds_test