Ideas for using the Intel TBB task scheduler with Intel OpenCv
I want to use TBB's scheduler to manage data reading and processing with multiple cameras,so that each camera performs its functions in a seperate thread. Most of my vision code is using Intel OpenCv.
Vision applications often lack responsiveness and scalability. It is common to see applications that periodically hang and stop responding.The reason applications hang and have poor responsiveness is almost always due to performing camera read operations,and then routing this high volume of data to multi-step algorithms.
When an application's performs ,for example two camera read operation simultaneously, the application is basically giving up control of the thread's processing to the devices. The application's responsiveness then becomes unpredictable.When threads are suspended waiting for requests to complete, the application tends to create more threads in an attempt to accomplish more work. creating, scheduling, and destroying a thread requires time and memory and can actually hurt performance rather than improve it.
Also if one of the camera fails to give data,the whole application crashes.
Can I use TBB in combination with OpenCv ,so that the thread management issues are taken care of by TBB ?
My understanding is that TBB assumes its tasks are running at full throttle, so it will not steal any work and dispatch a software thread to keep a hardware thread busy. The advice I've heard is to do the I/O yourself and then assign computational work to a background task.