TBB always creates nthreads passed to task_scheduler_init. So there is no need to ensure how many worker threads are created if you specified it explicitly. In run time TBB scheduler manages tasks executed by the worker threads. If there is no enough job for some threads they will wait inactively. So the number of created threads is constant, but number of active worker threads at the moment is variable. Intention is to leave TBB runtime tobalance loadbetweenthe worker threads and manage number of worker threads at the moment.