MCPcopy Create free account
hub / github.com/cameron314/readerwriterqueue / pop

Method pop

tests/unittests/unittests.cpp:396–437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

394 }
395
396 bool pop()
397 {
398 weak_atomic<int> result;
399 result = 1;
400
401 ReaderWriterQueue<int> q(100);
402 SimpleThread reader([&]() {
403 int item;
404 int prevItem = -1;
405 int* peeked;
406 for (int i = 0; i != 100000; ++i) {
407 peeked = q.peek();
408 if (peeked != nullptr) {
409 item = *peeked;
410 if (q.pop()) {
411 if (item <= prevItem) {
412 result = 0;
413 }
414 prevItem = item;
415 }
416 else {
417 result = 0;
418 }
419 }
420 }
421 });
422 SimpleThread writer([&]() {
423 for (int i = 0; i != 100000; ++i) {
424 if (((i >> 7) & 1) == 0) {
425 q.enqueue(i);
426 }
427 else {
428 q.try_enqueue(i);
429 }
430 }
431 });
432
433 writer.join();
434 reader.join();
435
436 return result.load() == 1 ? true : false;
437 }
438
439 bool size_approx()
440 {

Callers 2

blockingMethod · 0.80

Calls 5

joinMethod · 0.80
loadMethod · 0.80
peekMethod · 0.45
enqueueMethod · 0.45
try_enqueueMethod · 0.45

Tested by

no test coverage detected