Skip to content

Commit 75fd778

Browse files
committed
Update BlockingQueue.ixx
1 parent 0cd59dc commit 75fd778

File tree

1 file changed

+17
-33
lines changed

1 file changed

+17
-33
lines changed

print-foobar-alternately/BlockingQueue.ixx

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
module;
2+
#include <climits>
3+
#include <condition_variable>
24
#include <functional>
35
#include <mutex>
46
#include <queue>
7+
58
export module leetcode_test.print_foobar_alternately.BlockingQueue;
69
using namespace std;
710
namespace leetcode_test::print_foobar_alternately {
811

9-
export template <class E>
10-
class BlockingQueue {
12+
export template <class E> class BlockingQueue {
1113

12-
private:
14+
private:
1315
queue<E> _queue;
1416
int capacity = INT_MAX;
1517
condition_variable takeVariable, putVariable;
1618
mutable mutex lock;
1719

18-
public:
20+
public:
1921
BlockingQueue();
2022
/**
2123
*
@@ -27,13 +29,13 @@ public:
2729
* @param e
2830
* @return -1失败, 0成功
2931
*/
30-
int take(E& e);
32+
int take(E &e);
3133
/**
3234
* size >= capacity时会阻塞
3335
* @param e
3436
* @return
3537
*/
36-
int put(const E& e);
38+
int put(const E &e);
3739

3840
bool empty() const;
3941

@@ -46,18 +48,12 @@ public:
4648
E front();
4749
};
4850

49-
template <class E>
50-
BlockingQueue<E>::BlockingQueue() { }
51+
template <class E> BlockingQueue<E>::BlockingQueue() {}
5152

5253
template <class E>
53-
BlockingQueue<E>::BlockingQueue(int capacity)
54-
: capacity(capacity)
55-
{
56-
}
54+
BlockingQueue<E>::BlockingQueue(int capacity) : capacity(capacity) {}
5755

58-
template <class E>
59-
int BlockingQueue<E>::take(E& e)
60-
{
56+
template <class E> int BlockingQueue<E>::take(E &e) {
6157
unique_lock<mutex> uniqueLock(lock);
6258
while (_queue.empty()) {
6359
takeVariable.wait(uniqueLock);
@@ -70,9 +66,7 @@ int BlockingQueue<E>::take(E& e)
7066
return 0;
7167
}
7268

73-
template <class E>
74-
int BlockingQueue<E>::put(const E& e)
75-
{
69+
template <class E> int BlockingQueue<E>::put(const E &e) {
7670
unique_lock<mutex> uniqueLock(lock);
7771
while (_queue.size() >= capacity) {
7872
putVariable.wait(uniqueLock);
@@ -84,38 +78,28 @@ int BlockingQueue<E>::put(const E& e)
8478
return 0;
8579
}
8680

87-
template <class E>
88-
bool BlockingQueue<E>::empty() const
89-
{
81+
template <class E> bool BlockingQueue<E>::empty() const {
9082
lock_guard<mutex> lockGuard(lock);
9183
return _queue.empty();
9284
}
9385

94-
template <class E>
95-
unsigned int BlockingQueue<E>::size() const
96-
{
86+
template <class E> unsigned int BlockingQueue<E>::size() const {
9787
lock_guard<mutex> lockGuard(lock); // 利用变量作用域创建加锁,析构自动解锁
9888
return _queue.size();
9989
}
10090

101-
template <class E>
102-
void BlockingQueue<E>::pop()
103-
{
91+
template <class E> void BlockingQueue<E>::pop() {
10492
lock.lock();
10593
_queue.pop();
10694
lock.unlock();
10795
}
10896

109-
template <class E>
110-
E BlockingQueue<E>::back()
111-
{
97+
template <class E> E BlockingQueue<E>::back() {
11298
lock_guard<mutex> lockGuard(lock);
11399
return _queue.back();
114100
}
115101

116-
template <class E>
117-
E BlockingQueue<E>::front()
118-
{
102+
template <class E> E BlockingQueue<E>::front() {
119103
lock_guard<mutex> lockGuard(lock);
120104
return _queue.front();
121105
}

0 commit comments

Comments
 (0)