:Release Notes: Trying to find sanitizer problem :Detailed Notes: - :Testing Performed: - :QA Notes: - :Issues Addressed: -
34 lines
830 B
C++
34 lines
830 B
C++
#include <gtest/gtest.h>
|
|
#include <readerwriterqueue/readerwriterqueue.h>
|
|
#include <thread>
|
|
|
|
static constexpr size_t repeat = 1 << 20;
|
|
|
|
void producer(moodycamel::ReaderWriterQueue<int>& queue) {
|
|
for(int i = 0; i < repeat; ++i) {
|
|
while(!queue.try_enqueue(i)) { std::this_thread::yield(); }
|
|
}
|
|
}
|
|
|
|
void consumer(moodycamel::ReaderWriterQueue<int>& queue) {
|
|
size_t counter = 0;
|
|
int val = 0;
|
|
while(counter < repeat) {
|
|
while(!queue.try_dequeue(val)) {
|
|
std::this_thread::yield();
|
|
}
|
|
++counter;
|
|
}
|
|
}
|
|
|
|
TEST(BASIC, rwq) {
|
|
moodycamel::ReaderWriterQueue<int> queue;
|
|
std::jthread t1{&producer, std::ref(queue)};
|
|
std::jthread t2{&consumer, std::ref(queue)};
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
} |