File tree Expand file tree Collapse file tree 3 files changed +14
-14
lines changed Expand file tree Collapse file tree 3 files changed +14
-14
lines changed Original file line number Diff line number Diff line change 16
16
#include < mutex> // NOLINT
17
17
#include < queue>
18
18
#include < utility>
19
+ #include " readerwriterqueue/readerwriterqueue.h"
19
20
20
21
namespace bustub {
21
22
@@ -33,27 +34,18 @@ class Channel {
33
34
*
34
35
* @param element The element to be inserted.
35
36
*/
36
- void Put (T element) {
37
- std::unique_lock<std::mutex> lk (m_);
38
- q_.push (std::move (element));
39
- lk.unlock ();
40
- cv_.notify_all ();
41
- }
37
+ void Put (T element) { q_.enqueue (std::move (element)); }
42
38
43
39
/* *
44
40
* @brief Gets an element from the shared queue. If the queue is empty, blocks until an element is available.
45
41
*/
46
42
auto Get () -> T {
47
- std::unique_lock<std::mutex> lk (m_);
48
- cv_.wait (lk, [&]() { return !q_.empty (); });
49
- T element = std::move (q_.front ());
50
- q_.pop ();
51
- return element;
43
+ T x;
44
+ q_.wait_dequeue (x);
45
+ return x;
52
46
}
53
47
54
48
private:
55
- std::mutex m_;
56
- std::condition_variable cv_;
57
- std::queue<T> q_;
49
+ moodycamel::BlockingReaderWriterQueue<T> q_;
58
50
};
59
51
} // namespace bustub
Original file line number Diff line number Diff line change @@ -15,3 +15,5 @@ add_subdirectory(argparse)
15
15
add_subdirectory (utf8proc )
16
16
17
17
add_subdirectory (backward-cpp )
18
+
19
+ add_subdirectory (readerwriterqueue )
Original file line number Diff line number Diff line change 64
64
# tag: v2.7.0
65
65
# commit hash: 8ca6144c85c165987cb1c5d8395c7314e13d4cd7
66
66
# commit hash date: Dec 16 2021
67
+
68
+ # readerwriterqueue
69
+ # url: https://github.com/cameron314/readerwriterqueue
70
+ # branch: master
71
+ # commit hash: 2dee33ae3edd1e454ac34fea0a27017613355eff
72
+ # commit hash date: Mar 5 2023
You can’t perform that action at this time.
0 commit comments