add doxygen via opencode
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
/*! \file pipipelinethread.h
|
||||
* \ingroup Thread
|
||||
* \~\brief
|
||||
* \~english Class for create multihread pipeline
|
||||
* \~russian Класс для создания многопоточного конвейера
|
||||
*/
|
||||
//! \file pipipelinethread.h
|
||||
//! \ingroup Thread
|
||||
//! \brief
|
||||
//! \~english Class for creating multithread pipeline
|
||||
//! \~russian Класс для создания многопоточного конвейера
|
||||
//!
|
||||
//! \details
|
||||
//! \~english Pipeline thread for processing data through stages in separate threads.
|
||||
//! \~russian Конвейерный поток для обработки данных через этапы в отдельных потоках.
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Class for create multihread pipeline
|
||||
@@ -31,16 +34,22 @@
|
||||
#include "pithread.h"
|
||||
|
||||
|
||||
//! \~english Pipeline thread template class
|
||||
//! \~russian Шаблонный класс конвейерного потока
|
||||
template<typename Tin, typename Tout>
|
||||
class PIPipelineThread: public PIThread {
|
||||
PIOBJECT_SUBCLASS(PIPipelineThread, PIThread);
|
||||
|
||||
public:
|
||||
//! \~english Constructs pipeline thread
|
||||
//! \~russian Создает конвейерный поток
|
||||
PIPipelineThread() {
|
||||
cnt = 0;
|
||||
max_size = 0;
|
||||
wait_next_pipe = false;
|
||||
}
|
||||
//! \~english Destroys pipeline thread
|
||||
//! \~russian Уничтожает конвейерный поток
|
||||
~PIPipelineThread() {
|
||||
stop();
|
||||
cv.notifyAll();
|
||||
@@ -49,6 +58,8 @@ public:
|
||||
terminate();
|
||||
}
|
||||
}
|
||||
//! \~english Connect to next pipeline stage
|
||||
//! \~russian Подключает к следующему этапу конвейера
|
||||
template<typename T>
|
||||
void connectTo(PIPipelineThread<Tout, T> * next) {
|
||||
CONNECT3(void, Tout, bool, bool *, this, calculated, next, enqueue);
|
||||
@@ -72,9 +83,21 @@ public:
|
||||
}
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
//! \~english Enqueue data for processing
|
||||
//! \~russian Добавляет данные в очередь на обработку
|
||||
void enqueue(const Tin & v, bool wait = false) { enqueue(v, wait, nullptr); }
|
||||
|
||||
//! \~english Returns pointer to counter
|
||||
//! \~russian Возвращает указатель на счетчик
|
||||
const ullong * counterPtr() const { return &cnt; }
|
||||
|
||||
//! \~english Returns items processed counter
|
||||
//! \~russian Возвращает количество обработанных элементов
|
||||
ullong counter() const { return cnt; }
|
||||
|
||||
//! \~english Returns if input queue is empty
|
||||
//! \~russian Возвращает пустая ли входная очередь
|
||||
bool isEmpty() {
|
||||
bool ret;
|
||||
mutex.lock();
|
||||
@@ -82,6 +105,9 @@ public:
|
||||
mutex.unlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
//! \~english Returns input queue size
|
||||
//! \~russian Возвращает размер входной очереди
|
||||
int queSize() {
|
||||
int ret;
|
||||
mutex.lock();
|
||||
@@ -89,6 +115,9 @@ public:
|
||||
mutex.unlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
//! \~english Clear input queue
|
||||
//! \~russian Очищает входную очередь
|
||||
void clear() {
|
||||
mutex.lock();
|
||||
mutex_wait.lock();
|
||||
@@ -97,6 +126,9 @@ public:
|
||||
mutex_wait.unlock();
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
//! \~english Stop calculation
|
||||
//! \~russian Останавливает вычисления
|
||||
void stopCalc(int wait_delay = 100) {
|
||||
if (isRunning()) {
|
||||
stop();
|
||||
@@ -108,6 +140,9 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! \~english Returns last processed result
|
||||
//! \~russian Возвращает последний обработанный результат
|
||||
Tout getLast() {
|
||||
Tout ret;
|
||||
mutex_last.lock();
|
||||
@@ -116,8 +151,12 @@ public:
|
||||
return ret;
|
||||
}
|
||||
|
||||
//! \~english Returns max queue size
|
||||
//! \~russian Возвращает максимальный размер очереди
|
||||
uint maxQueSize() { return max_size; }
|
||||
|
||||
//! \~english Set max queue size
|
||||
//! \~russian Устанавливает максимальный размер очереди
|
||||
void setMaxQueSize(uint count) {
|
||||
mutex.lock();
|
||||
max_size = count;
|
||||
@@ -125,10 +164,17 @@ public:
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
//! \~english Returns if waiting for next pipeline
|
||||
//! \~russian Возвращает ожидает ли следующий конвейер
|
||||
bool isWaitNextPipe() { return wait_next_pipe; }
|
||||
|
||||
//! \~english Set waiting for next pipeline
|
||||
//! \~russian Устанавливает ожидание следующего конвейера
|
||||
void setWaitNextPipe(bool wait) { wait_next_pipe = wait; }
|
||||
|
||||
protected:
|
||||
//! \~english Processing function - must be implemented
|
||||
//! \~russian Функция обработки - должна быть реализована
|
||||
virtual Tout calc(Tin & v, bool & ok) = 0;
|
||||
|
||||
uint max_size;
|
||||
|
||||
Reference in New Issue
Block a user