You must be doing something else wrong (e.g., calling build_global() after you have already used some other functionality that required configuring the global thread pool), since the documentation explicitly states that num_threads will be respected:
If you specify a non-zero number of threads using this function, then the resulting thread-pools are guaranteed to start at most this number of threads.