Multi-threaded producer-consumer queue to perform some task.
Definition at line 343 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
Public Member Functions | |
| NvTrackerMultiThreadWorker () | |
| Initialize an empty worker queue. More... | |
| ~NvTrackerMultiThreadWorker () | |
| Stop and join all persistent worker threads. More... | |
| void | initialize (const uint numThreads, std::function< void(T)> funcPerThread) |
| Launch all worker threads and worker function. More... | |
| void | submitInput (T inData) |
| Submit association input data to queue in main thread. More... | |
| void | waitToFinish () |
| Wait all worker threads to finish in main thread. More... | |
| void | threadLoopFunc () |
| Process queued jobs until the worker receives a deinitialization signal. More... | |
| bool | isInitialized () |
| Report whether the worker queue is initialized. More... | |
| NvTrackerMultiThreadWorker () | |
| Initialize an empty worker queue. More... | |
| ~NvTrackerMultiThreadWorker () | |
| Stop and join all persistent worker threads. More... | |
| void | initialize (const uint numThreads, std::function< void(T)> funcPerThread) |
| Launch all worker threads and worker function. More... | |
| void | submitInput (T inData) |
| Submit association input data to queue in main thread. More... | |
| void | waitToFinish () |
| Wait all worker threads to finish in main thread. More... | |
| void | threadLoopFunc () |
| Process queued jobs until the worker receives a deinitialization signal. More... | |
| bool | isInitialized () |
| Report whether the worker queue is initialized. More... | |
Data Fields | |
| bool | m_isInit |
| Indicates whether the worker has been initialized. More... | |
| std::mutex | m_inputLock |
| Lock associated with input queue. More... | |
| std::mutex | m_outputLock |
| Lock associated with output. More... | |
| std::condition_variable | m_cond4In |
| Condition variable associated with the input queue. More... | |
| std::condition_variable | m_cond4Out |
| Condition variable associated with the output. More... | |
| std::queue< T > | m_inputQueue |
| Queue for input. More... | |
| std::vector< std::thread > | m_threadList |
| Persistent threads over batches. More... | |
| bool | m_persistThreadRunning |
| Whether associate persistent threads should keep running; set false if receive deinit signal. More... | |
| uint | m_submittedJobCnt |
| Keep track of how many tasks are submitted. More... | |
| uint | m_finishedJobCnt |
| Keep track of how many tasks are finished. More... | |
| std::function< void(T)> | m_funcPerThread |
| Data processing function in each worker thread. More... | |
| NvTrackerMultiThreadWorker< T >::NvTrackerMultiThreadWorker | ( | ) |
Initialize an empty worker queue.
| NvTrackerMultiThreadWorker< T >::~NvTrackerMultiThreadWorker | ( | ) |
Stop and join all persistent worker threads.
| NvTrackerMultiThreadWorker< T >::NvTrackerMultiThreadWorker | ( | ) |
Initialize an empty worker queue.
| NvTrackerMultiThreadWorker< T >::~NvTrackerMultiThreadWorker | ( | ) |
Stop and join all persistent worker threads.
| void NvTrackerMultiThreadWorker< T >::initialize | ( | const uint | numThreads, |
| std::function< void(T)> | funcPerThread | ||
| ) |
Launch all worker threads and worker function.
| [in] | numThreads | Number of worker threads. |
| [in] | funcPerThread | Function to execute in each thread. |
| void NvTrackerMultiThreadWorker< T >::initialize | ( | const uint | numThreads, |
| std::function< void(T)> | funcPerThread | ||
| ) |
Launch all worker threads and worker function.
| [in] | numThreads | Number of worker threads. |
| [in] | funcPerThread | Function to execute in each thread. |
|
inline |
Report whether the worker queue is initialized.
Definition at line 386 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
References NvTrackerMultiThreadWorker< T >::m_isInit.
|
inline |
Report whether the worker queue is initialized.
Definition at line 386 of file 9.2/sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
References NvTrackerMultiThreadWorker< T >::m_isInit.
| void NvTrackerMultiThreadWorker< T >::submitInput | ( | T | inData | ) |
Submit association input data to queue in main thread.
| [in] | inData | Job data queued for a worker thread. |
| void NvTrackerMultiThreadWorker< T >::submitInput | ( | T | inData | ) |
Submit association input data to queue in main thread.
| [in] | inData | Job data queued for a worker thread. |
| void NvTrackerMultiThreadWorker< T >::threadLoopFunc | ( | ) |
Process queued jobs until the worker receives a deinitialization signal.
| void NvTrackerMultiThreadWorker< T >::threadLoopFunc | ( | ) |
Process queued jobs until the worker receives a deinitialization signal.
| void NvTrackerMultiThreadWorker< T >::waitToFinish | ( | ) |
Wait all worker threads to finish in main thread.
| void NvTrackerMultiThreadWorker< T >::waitToFinish | ( | ) |
Wait all worker threads to finish in main thread.
| std::condition_variable NvTrackerMultiThreadWorker< T >::m_cond4In |
Condition variable associated with the input queue.
Definition at line 351 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| std::condition_variable NvTrackerMultiThreadWorker< T >::m_cond4Out |
Condition variable associated with the output.
Definition at line 352 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| uint NvTrackerMultiThreadWorker< T >::m_finishedJobCnt |
Keep track of how many tasks are finished.
Definition at line 357 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| std::function< void(T)> NvTrackerMultiThreadWorker< T >::m_funcPerThread |
Data processing function in each worker thread.
Definition at line 358 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| std::mutex NvTrackerMultiThreadWorker< T >::m_inputLock |
Lock associated with input queue.
Definition at line 349 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| std::queue< T > NvTrackerMultiThreadWorker< T >::m_inputQueue |
Queue for input.
Definition at line 353 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| bool NvTrackerMultiThreadWorker< T >::m_isInit |
Indicates whether the worker has been initialized.
Definition at line 348 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
Referenced by NvTrackerMultiThreadWorker< T >::isInitialized().
| std::mutex NvTrackerMultiThreadWorker< T >::m_outputLock |
Lock associated with output.
Definition at line 350 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| bool NvTrackerMultiThreadWorker< T >::m_persistThreadRunning |
Whether associate persistent threads should keep running; set false if receive deinit signal.
Definition at line 355 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| uint NvTrackerMultiThreadWorker< T >::m_submittedJobCnt |
Keep track of how many tasks are submitted.
Definition at line 356 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.
| std::vector< std::thread > NvTrackerMultiThreadWorker< T >::m_threadList |
Persistent threads over batches.
Definition at line 354 of file sources/libs/nvmultiobjecttracker/include/modules/NvMultiObjectTracker/NvMultiObjectTracker_common.hpp.