None of the "tasks" are polling or blocking. They perform work they were assigned when spawned and then put their result in a queue. But the result must come in the same order as the tasks were spawned.awned TBB tasks are not ordered in any way. This is why I said that using them does not suit your case.
> I will have probably 6-7 of these objects running
If this means that you have 6-7 streams of in-order work chunks, then again using tasks can be even harmful in case you are thinking about 6-7 tasks each polling concurrent_queue of its own. The problem is that TBB does not ensure a particular level of concurrency, and if the TBB task pool was initialized with say 3 worker threads only 3 of you work streams will be making progress, while other ones will be stalled indefinitely. Besides waiting in TBB tasks is harmful by itself, as it prevents TBB workers from doing other work that may be available at the moment.
Thus you either need a separate thread per your work stream (if work chunks from different streams can be processed concurrently), or a single thread that polls several concurrent queues in a round-robbin fashion using non-blocking try_pop method.
At last, if your work chunks are large enough you can use TBB parallel algorithms to process them.