Насколько я понимаю, OpenMP - это среда / библиотека для распараллеливания с помощью компилятора, предназначенная для тяжелых вычислений. Вы указываете компилятору, какие части вашего кода (обычно циклы) могут выполняться параллельно. Компилятор делает свое дело (вставляя библиотечные вызовы, разделяя / не разделяя переменные и т. Д.), И теперь программа может работать быстрее (иногда) на нескольких ядрах. Возможно, с OpenMP можно сделать то, что вы хотите, я не знаю, но я думаю, что вы смотрите не на тот инструмент. Делать вещи напрямую с pthreads - одна из альтернатив.