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

Method peek

tests/unittests/unittests.cpp:354–394  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

352 }
353
354 bool peek()
355 {
356 weak_atomic<int> result;
357 result = 1;
358
359 ReaderWriterQueue<int> q(100);
360 SimpleThread reader([&]() {
361 int item;
362 int prevItem = -1;
363 int* peeked;
364 for (int i = 0; i != 100000; ++i) {
365 peeked = q.peek();
366 if (peeked != nullptr) {
367 if (q.try_dequeue(item)) {
368 if (item <= prevItem || item != *peeked) {
369 result = 0;
370 }
371 prevItem = item;
372 }
373 else {
374 result = 0;
375 }
376 }
377 }
378 });
379 SimpleThread writer([&]() {
380 for (int i = 0; i != 100000; ++i) {
381 if (((i >> 7) & 1) == 0) {
382 q.enqueue(i);
383 }
384 else {
385 q.try_enqueue(i);
386 }
387 }
388 });
389
390 writer.join();
391 reader.join();
392
393 return result.load() == 1 ? true : false;
394 }
395
396 bool pop()
397 {

Callers 3

popMethod · 0.45
blockingMethod · 0.45

Calls 5

joinMethod · 0.80
loadMethod · 0.80
try_dequeueMethod · 0.45
enqueueMethod · 0.45
try_enqueueMethod · 0.45

Tested by

no test coverage detected