Commit 67300dac authored by Zheng Yan's avatar Zheng Yan Committed by Facebook Github Bot

Add readWithPriority to PriorityMPMCQueue

Summary: Add readWithPriority to PriorityMPMCQueue

Reviewed By: yfeldblum

Differential Revision: D6606604

fbshipit-source-id: 07382e3c6d0f53a8727c059410c0577cf0aac82c
parent 5ad17f07
......@@ -66,6 +66,10 @@ class PriorityMPMCQueue {
return false;
}
bool readWithPriority(T& item, size_t priority) {
return queues_[priority].readIfNotEmpty(item);
}
size_t size() const {
size_t total_size = 0;
for (auto& q : queues_) {
......
......@@ -73,3 +73,24 @@ TEST(PriorityMPMCQueue, TestPriorities) {
EXPECT_EQ(6 - i, queue.sizeGuess());
}
}
TEST(PriorityMPMCQueue, TestReadWithPriority) {
PriorityMPMCQueue<size_t> queue(3, 10);
EXPECT_TRUE(queue.isEmpty());
EXPECT_EQ(3, queue.getNumPriorities());
queue.writeWithPriority(2, 2);
queue.writeWithPriority(1, 1);
queue.writeWithPriority(0, 0);
EXPECT_FALSE(queue.isEmpty());
EXPECT_EQ(3, queue.size());
EXPECT_EQ(3, queue.sizeGuess());
size_t item;
for (int i = 0; i < 3; i++) {
EXPECT_TRUE(queue.readWithPriority(item, i));
EXPECT_EQ(i, item);
EXPECT_FALSE(queue.readWithPriority(item, i));
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment