@@ -59,13 +59,12 @@ struct mpsc_single_producer_consumer : rl::test_suite<mpsc_single_producer_consu
5959struct mpsc_two_producers : rl::test_suite<mpsc_two_producers, 3 > {
6060 test_queue queue;
6161 test_node nodes[4 ] = {test_node{1 }, test_node{2 }, test_node{3 }, test_node{4 }};
62- std::atomic< int > consumed_count{0 };
63- std::atomic< bool > seen[4 ];
62+ int consumed_count{0 };
63+ bool seen[4 ];
6464
6565 void before () {
66- consumed_count.store (0 , std::memory_order_relaxed);
6766 for (int i = 0 ; i < 4 ; ++i) {
68- seen[i]. store ( false , std::memory_order_relaxed) ;
67+ seen[i] = false ;
6968 }
7069 }
7170
@@ -80,25 +79,23 @@ struct mpsc_two_producers : rl::test_suite<mpsc_two_producers, 3> {
8079 queue.push_back (&nodes[3 ]);
8180 } else {
8281 // Consumer
83- int count = 0 ;
84- while (count < 4 ) {
82+ while (consumed_count < 4 ) {
8583 test_node* node = queue.pop_front ();
8684 if (node) {
8785 int idx = node->value_ - 1 ;
8886 RL_ASSERT (idx >= 0 && idx < 4 );
89- bool was_seen = seen[idx]. exchange ( true , std::memory_order_relaxed );
87+ bool was_seen = std::exchange ( seen[idx], true );
9088 RL_ASSERT (!was_seen); // Each node should be seen exactly once
91- ++count ;
89+ ++consumed_count ;
9290 }
9391 }
94- consumed_count.store (count, std::memory_order_relaxed);
9592 }
9693 }
9794
9895 void after () {
99- RL_ASSERT (consumed_count. load () == 4 );
96+ RL_ASSERT (consumed_count == 4 );
10097 for (int i = 0 ; i < 4 ; ++i) {
101- RL_ASSERT (seen[i]. load () );
98+ RL_ASSERT (seen[i]);
10299 }
103100 }
104101};
@@ -202,13 +199,12 @@ struct mpsc_five_prod_one_cons : rl::test_suite<mpsc_five_prod_one_cons, 6> {
202199 // Producer 4: values 40000-40001
203200 test_node{40000 }, test_node{40001 }
204201 };
205- std::atomic< int > consumed_count{0 };
206- std::atomic< bool > seen[10 ];
202+ int consumed_count{0 };
203+ bool seen[10 ];
207204
208205 void before () {
209- consumed_count.store (0 , std::memory_order_relaxed);
210206 for (int i = 0 ; i < 10 ; ++i) {
211- seen[i]. store ( false , std::memory_order_relaxed) ;
207+ seen[i] = false ;
212208 }
213209 }
214210
@@ -220,8 +216,7 @@ struct mpsc_five_prod_one_cons : rl::test_suite<mpsc_five_prod_one_cons, 6> {
220216 queue.push_back (&nodes[base_idx + 1 ]);
221217 } else {
222218 // Consumer thread (5)
223- std::atomic<int > count = 0 ;
224- while (count < 10 ) {
219+ while (consumed_count < 10 ) {
225220 test_node* node = queue.pop_front ();
226221 if (node) {
227222 // Map value to index
@@ -234,19 +229,18 @@ struct mpsc_five_prod_one_cons : rl::test_suite<mpsc_five_prod_one_cons, 6> {
234229 idx = producer_id * 2 + item_in_producer;
235230 }
236231 RL_ASSERT (idx >= 0 && idx < 10 );
237- bool was_seen = seen[idx]. exchange ( true , std::memory_order_relaxed );
232+ bool was_seen = std::exchange ( seen[idx], true );
238233 RL_ASSERT (!was_seen); // Each node should be seen exactly once
239- count. fetch_add ( 1 ) ;
234+ ++consumed_count ;
240235 }
241236 }
242- consumed_count.store (count, std::memory_order_relaxed);
243237 }
244238 }
245239
246240 void after () {
247- RL_ASSERT (consumed_count. load () == 10 );
241+ RL_ASSERT (consumed_count == 10 );
248242 for (int i = 0 ; i < 10 ; ++i) {
249- RL_ASSERT (seen[i]. load () );
243+ RL_ASSERT (seen[i]);
250244 }
251245 }
252246};
@@ -258,11 +252,10 @@ struct mpsc_five_producers_ordered : rl::test_suite<mpsc_five_producers_ordered,
258252
259253 test_queue queue;
260254 test_node nodes[TOTAL_ITEMS ];
261- std::atomic< int > consumed_count{0 };
255+ int consumed_count{0 };
262256 int consumed_values[TOTAL_ITEMS ];
263257
264258 void before () {
265- consumed_count.store (0 , std::memory_order_relaxed);
266259 for (int i = 0 ; i < TOTAL_ITEMS ; ++i) {
267260 consumed_values[i] = -1 ;
268261 // Initialize nodes with their values
@@ -279,19 +272,18 @@ struct mpsc_five_producers_ordered : rl::test_suite<mpsc_five_producers_ordered,
279272 }
280273 } else {
281274 int count = 0 ;
282- while (count < TOTAL_ITEMS ) {
275+ while (consumed_count < TOTAL_ITEMS ) {
283276 test_node* node = queue.pop_front ();
284277 if (node) {
285278 consumed_values[count] = node->value_ ;
286- ++count ;
279+ ++consumed_count ;
287280 }
288281 }
289- consumed_count.store (count, std::memory_order_relaxed);
290282 }
291283 }
292284
293285 void after () {
294- RL_ASSERT (consumed_count. load () == TOTAL_ITEMS );
286+ RL_ASSERT (consumed_count == TOTAL_ITEMS );
295287
296288 // Check that each value appears exactly once
297289 bool seen[TOTAL_ITEMS + 1 ] = {false }; // values are 1-500, so need 501 elements
0 commit comments