split project with app & doric module

This commit is contained in:
王劲鹏
2021-04-29 20:12:49 +08:00
committed by osborn
parent 25db4cc194
commit a5e00e4fa5
154 changed files with 795 additions and 293 deletions

View File

@@ -0,0 +1,32 @@
#ifndef COUNTDOWNLATCH_H
#define COUNTDOWNLATCH_H
#include <QSemaphore>
#include <climits>
class DoricCountDownLatch {
Q_DISABLE_COPY(DoricCountDownLatch)
QSemaphore m_sem{INT_MAX};
public:
DoricCountDownLatch() {}
~DoricCountDownLatch() {
m_sem.acquire(INT_MAX);
m_sem.release(INT_MAX);
}
class Locker {
DoricCountDownLatch *sem;
public:
Locker(const Locker &other) : sem{other.sem} { sem->m_sem.acquire(); }
Locker(Locker &&other) : sem{other.sem} { other.sem = nullptr; }
Locker(DoricCountDownLatch *sem) : sem{sem} { sem->m_sem.acquire(); }
~Locker() {
if (sem)
sem->m_sem.release();
}
};
Locker lock() { return Locker{this}; }
};
#endif // COUNTDOWNLATCH_H