doc ru
This commit is contained in:
@@ -209,7 +209,7 @@ __THREAD_FUNC_RET__ thread_function_once(void * t) {((PIThread*)t)->__thread_fun
|
||||
//! If "func" if not null this function will be executed after \a run().
|
||||
//!
|
||||
//! ThreadFunc is any static function with format "void func(void * data)", or
|
||||
//! lambda-function with format [...]( ){...}.
|
||||
//! [lambda expression](https://en.cppreference.com/w/cpp/language/lambda) with format [...]( ){...}.
|
||||
//! "Data" is custom data set from constructor or with \a setData() function.
|
||||
//!
|
||||
//! Also you can connect to event \a started(), but in this case you should to white
|
||||
@@ -221,7 +221,7 @@ __THREAD_FUNC_RET__ thread_function_once(void * t) {((PIThread*)t)->__thread_fun
|
||||
//! если "ThreadFunc" существует, он будет вызываться после \a run().
|
||||
//!
|
||||
//! ThreadFunc может быть любым статическим методом в формате "void func(void * data)", либо
|
||||
//! лямбда-функцией в формате [...]( ){...}.
|
||||
//! [лямбда-выражение](https://ru.cppreference.com/w/cpp/language/lambda) в формате [...]( ){...}.
|
||||
//! "Data" является произвольным указателем, задаваемым в конструкторе или методом \a setData().
|
||||
//!
|
||||
//! Также можно присоединиться к событию \a started(), но в этом случае надо будет своими силами
|
||||
@@ -273,8 +273,8 @@ __THREAD_FUNC_RET__ thread_function_once(void * t) {((PIThread*)t)->__thread_fun
|
||||
//! // thread run 1
|
||||
//! \endcode
|
||||
//!
|
||||
//! \~english Using with lambda-function
|
||||
//! \~russian Использование с лямбда-функцией
|
||||
//! \~english Using with [lambda expression](https://en.cppreference.com/w/cpp/language/lambda)
|
||||
//! \~russian Использование с [лямбда-выражением](https://ru.cppreference.com/w/cpp/language/lambda)
|
||||
//! \~\code{.cpp}
|
||||
//! int main(int argc, char * argv[]) {
|
||||
//! int cnt = 0;
|
||||
@@ -971,13 +971,13 @@ void PIThread::runOnce(PIObject * object, const char * handler, const PIString &
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! This method create %PIThread with name "name" and execute
|
||||
//! lambda-function "func" in this thread.\n
|
||||
//! [lambda expression](https://en.cppreference.com/w/cpp/language/lambda) "func" in this thread.\n
|
||||
//! This %PIThread automatically delete on function finish.\n
|
||||
//! "func" shouldn`t have arguments.
|
||||
//!
|
||||
//! \~russian
|
||||
//! Этот метод создает %PIThread с именем "name" и выполняет
|
||||
//! лямбда-функцию "func" в этом потоке.\n
|
||||
//! [лямбда-выражение](https://ru.cppreference.com/w/cpp/language/lambda) "func" в этом потоке.\n
|
||||
//! %PIThread автоматически удаляется после завершения функции.\n
|
||||
//! "func" не должна иметь аргументов.
|
||||
//!
|
||||
|
||||
@@ -173,8 +173,8 @@ public:
|
||||
//! \~russian Вызывает обработчик "handler" объекта "object" в отдельном потоке
|
||||
static void runOnce(PIObject * object, const char * handler, const PIString & name = PIString());
|
||||
|
||||
//! \~english Call lambda-function "func" in separate thread
|
||||
//! \~russian Вызывает лямбда-функцию "func" в отдельном потоке
|
||||
//! \~english Call [lambda expression](https://en.cppreference.com/w/cpp/language/lambda) "func" in separate thread
|
||||
//! \~russian Вызывает [лямбда-выражение](https://ru.cppreference.com/w/cpp/language/lambda) "func" в отдельном потоке
|
||||
static void runOnce(std::function<void()> func, const PIString & name = PIString());
|
||||
|
||||
//! \handlers
|
||||
|
||||
@@ -28,25 +28,63 @@
|
||||
//! \~russian Класс для простого уведомления и ожидания в различных потоках
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//!
|
||||
//! \~russian
|
||||
//!
|
||||
//!
|
||||
//! \~english \section PIThreadNotifier_sec0 Synopsis
|
||||
//! \~russian \section PIThreadNotifier_sec0 Краткий обзор
|
||||
//! \~english
|
||||
//! This class used as event mechanism between threads. One thread wait for some event,
|
||||
//! and another send this event, unblocking first thread. It is useful to
|
||||
//! syncronize some actions in several threads.
|
||||
//!
|
||||
//! \~russian
|
||||
//!
|
||||
//!Этот класс используется как событийный механизм между потоками.
|
||||
//! Один поток ждёт некоторого события и другой его отправляет, разблокируя первый.
|
||||
//! Это полезно для синхронизации действий в нескольких потоках.
|
||||
//!
|
||||
//! \~english \section PIThreadNotifier_sec1 Usage
|
||||
//! \~russian \section PIThreadNotifier_sec1 Использование
|
||||
//! \~english
|
||||
//! \~\code
|
||||
//! PIThreadNotifier notifier;
|
||||
//! PITimeMeasurer time;
|
||||
//!
|
||||
//! \~russian
|
||||
//! class Worker: public PIThread {
|
||||
//! PIOBJECT_SUBCLASS(Worker, PIThread)
|
||||
//! public:
|
||||
//! Worker(const PIString & n) {
|
||||
//! setName(n);
|
||||
//! }
|
||||
//! void run() override {
|
||||
//! piCoutObj << (int)time.elapsed_m() << "wait ...";
|
||||
//! notifier.wait();
|
||||
//! piCoutObj << (int)time.elapsed_m() << "done";
|
||||
//! };
|
||||
//! };
|
||||
//!
|
||||
//!
|
||||
//! int main(int argc, char * argv[]) {
|
||||
//! PIVector<Worker*> workers;
|
||||
//!
|
||||
//! // create 2 threads
|
||||
//! for (auto n: {"first ", "second"})
|
||||
//! workers << new Worker(n);
|
||||
//!
|
||||
//! // start them
|
||||
//! for (auto * w: workers)
|
||||
//! w->startOnce();
|
||||
//!
|
||||
//! piMSleep(500);
|
||||
//! notifier.notifyOnce(); // notify one of them after 500 ms
|
||||
//! piMSleep(500);
|
||||
//! notifier.notifyOnce(); // notify one of them after 1000 ms
|
||||
//!
|
||||
//! for (auto * w: workers)
|
||||
//! w->waitForFinish();
|
||||
//! }
|
||||
//!
|
||||
//! // [Worker "first "] 0 wait ...
|
||||
//! // [Worker "second"] 0 wait ...
|
||||
//! // [Worker "second"] 500 done
|
||||
//! // [Worker "first "] 1000 done
|
||||
//! \endcode
|
||||
//! \}
|
||||
|
||||
|
||||
|
||||
@@ -43,8 +43,8 @@ public:
|
||||
|
||||
virtual ~PIThreadPoolLoop();
|
||||
|
||||
//! \~english Set threads function to "f" with format [ ](int){ ... }
|
||||
//! \~russian Устанавливает функцию потоков на "f" в формате [ ](int){ ... }
|
||||
//! \~english Set threads function to [lambda expression](https://en.cppreference.com/w/cpp/language/lambda) "f" with format [ ](int){ ... }
|
||||
//! \~russian Устанавливает функцию потоков на [лямбда-выражение](https://ru.cppreference.com/w/cpp/language/lambda) "f" в формате [ ](int){ ... }
|
||||
void setFunction(std::function<void(int)> f);
|
||||
|
||||
//! \~english Wait for all threads stop
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
//! \~russian \section PITimer_sec1 Варианты уведомления
|
||||
//! \~english
|
||||
//! Notify variants:
|
||||
//! * "slot" - static function with format void func(void * data, int delimiter) or lambda-function;
|
||||
//! * "slot" - static function with format void func(void * data, int delimiter) or [lambda expression](https://en.cppreference.com/w/cpp/language/lambda);
|
||||
//! * event - \a tickEvent();
|
||||
//! * virtual function - \a tick().
|
||||
//!
|
||||
@@ -58,7 +58,7 @@
|
||||
//! All these variants are equivalent, use most applicable.
|
||||
//! \~russian
|
||||
//! Варианты уведомления:
|
||||
//! * "slot" - статический метод в формате void func(void * data, int delimiter) или лямбда-функция;
|
||||
//! * "slot" - статический метод в формате void func(void * data, int delimiter) или [лямбда-выражение](https://ru.cppreference.com/w/cpp/language/lambda);
|
||||
//! * event - \a tickEvent();
|
||||
//! * виртуальный метод - \a tick().
|
||||
//!
|
||||
|
||||
Reference in New Issue
Block a user