Files
pip/doc/pages/threading.md
2026-03-12 14:46:57 +03:00

3.5 KiB
Raw Blame History

~english \page threading Multithreading ~russian \page threading Многопоточность

~english

The Thread module provides threads, timers, synchronization primitives and task execution:

  • 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").
  • 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.
  • PIThreadPoolExecutor — submit tasks to a fixed pool of worker threads; wait for completion or shutdown.
  • PIThreadPoolLoop — run a function over a range in parallel (parallel-for style).
  • 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 предоставляет потоки, таймеры, примитивы синхронизации и выполнение задач:

  • PIThread — выполнение цикла или разовой работы в отдельном потоке. Переопределение \a run() или использование цикла по умолчанию; запуск и остановка — \a start() и \a stop(). Может быть исполнителем событий для \a PIObject (см. \ref using_advanced "Потоки и события").
  • PITimer — периодические вызовы с заданной частотой (например в Гц). Подключение обработчика; запуск и остановка таймера. Используется в \ref using_basic и в примерах машины состояний.
  • Синхронизация — \a PIMutex, \a PISpinlock, \a PIConditionVariable, \a PISemaphore, \a PIReadWriteLock для защиты общих данных и согласования потоков.
  • PIThreadPoolExecutor — отправка задач в пул рабочих потоков; ожидание завершения или остановка пула.
  • PIThreadPoolLoop — параллельный запуск функции по диапазону (стиль parallel-for).
  • 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.