The idea is that you should express all blocking dependencies (excluding predictably short waits) as parent-child relationships between tasks and let the task scheduler figure them out. Otherwise the task scheduler will not know what is going on and leave a hardware thread otherwise unused while the software thread that should be running on it is blocked waiting. If you do have such requirements, the most straightforward approach is to do those things outside of TBB in a dedicated thread (despite the name, tbb::tbb_thread is merely an API to such a thread). But feel free to experiment: it's not always black or white.
(Added) Relating to the title of this thread, "Mutex question": those would be the predictably short waits that I mentioned, for which TBB provides several types of mutexes.