OpenCV relies on different external systems for multithreading (or more accurately parallel processing). Possible options are:
- OpenMP (handled at the compiler level);
- Intel's TBB (external library);
- libdispatch (on systems that support it, like MacOS, iOS, *BSD);
- GPGPU approaches with CUDA and OpenCL.
In recent versions of OpenCV these systems are "hidden" behind a parallel_for construct.
All this applies to parallel processing, i.e., data parallel tasks (roughly speaking, process each pixel or row of the input in parallel). If you need application level multithreading (like for example having a master thread and workers) then you need to use frameworks such as POSIX's threads or Qt.