Даже после того, как вы будете следовать совету Питера, ваша программа не будет выполняться параллельно (как он предлагает и как я предлагаю объяснить). Вы можете заметить, что запущено нужное количество потоков, и все они выполняют программу.
Когда вы написали свой код, среда выполнения OpenMP будет распределять итерации цикла for по потокам. Например, если q.size равен 32, и вы запускаете 4 потока, тогда n = 0..7 может выполняться в потоке 0, n = 8..15 и так далее. Или поток 0 может выполнять итерации 0,8,16, .. и поток 1 выполнять итерации 1,9,17 и т. Д.
В любом случае все потоки будут выполнять инструкции внутри цикла for. Поскольку то, какие инструкции выполняются, не зависит от n, все потоки будут сканировать всю очередь. Поскольку q является общим, я ожидаю, что вы обнаружите, что ваша программа работает медленнее в N потоках, чем в 1, когда N> 1, поскольку потоки будут бороться за доступ к общей структуре данных.