3.5 KiB
~english \page threading Multithreading ~russian \page threading Многопоточность
~english
The Thread module provides threads, timers, synchronization primitives and task execution:
- \a PIThread — run a loop or one-off work in a separate thread. Override \a run() or use the default loop; start/stop with \a start() and \a stop(). Can act as the event performer for \a PIObject (see \ref using_advanced "Threading and events").
- \a PITimer — periodic callbacks at a given frequency (e.g. Hz). Connect to a handler; start/stop the timer. Used in \ref using_basic and in state machine examples.
- Synchronization — \a PIMutex, \a PISpinlock, \a PIConditionVariable, \a PISemaphore, \a PIReadWriteLock for protecting shared data and coordinating threads.
- \a PIThreadPoolExecutor — submit tasks to a fixed pool of worker threads; wait for completion or shutdown.
- \a PIThreadPoolLoop — run a function over a range in parallel (parallel-for style).
- \a PIBlockingDequeue — blocking producer-consumer queue for passing work between threads.
Use \a PIMutexLocker (and similar guards) for exception-safe locking. Events from other threads can be queued and processed in the object's thread via \a callQueuedEvents() (see \ref PIObject_sec0). Full API: \a pithread.h, \a pitimer.h, \a pimutex.h, \a pithreadpoolexecutor.h, \a piblockingqueue.h, \a pithreadmodule.h.
~russian
Модуль Thread предоставляет потоки, таймеры, примитивы синхронизации и выполнение задач:
- \a PIThread — выполнение цикла или разовой работы в отдельном потоке. Переопределение \a run() или использование цикла по умолчанию; запуск и остановка — \a start() и \a stop(). Может быть исполнителем событий для \a PIObject (см. \ref using_advanced "Потоки и события").
- \a PITimer — периодические вызовы с заданной частотой (например в Гц). Подключение обработчика; запуск и остановка таймера. Используется в \ref using_basic и в примерах машины состояний.
- Синхронизация — \a PIMutex, \a PISpinlock, \a PIConditionVariable, \a PISemaphore, \a PIReadWriteLock для защиты общих данных и согласования потоков.
- \a PIThreadPoolExecutor — отправка задач в пул рабочих потоков; ожидание завершения или остановка пула.
- \a PIThreadPoolLoop — параллельный запуск функции по диапазону (стиль parallel-for).
- \a PIBlockingDequeue — блокирующая очередь производитель–потребитель для передачи работы между потоками.
Для исключений-безопасной блокировки используйте \a PIMutexLocker и аналогичные охранные классы. События из других потоков можно ставить в очередь и обрабатывать в потоке объекта через \a callQueuedEvents() (см. \ref PIObject_sec0). Полный API: \a pithread.h, \a pitimer.h, \a pimutex.h, \a pithreadpoolexecutor.h, \a piblockingqueue.h, \a pithreadmodule.h.