Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: Igors от Сентябрь 18, 2020, 10:20



Название: QThreadPool на OpenMP
Отправлено: Igors от Сентябрь 18, 2020, 10:20
Добрый день

В одном из проектов Xcode 10 + clang, к сожалению, "ис каропки" OpenMP там не идет. Долго отклдывал и обходился QThreadPool, но вот прижало. Ну ладно, нашел инструкцию и заменил компилятор, OpenMP пошло (правда браузер стал работать совсем хреново).

Да, но 2 бригады ниток не будут хорошо работать вместе. Как реализовать ф-ционал QThreadPool ("закинул и пошел дальше") на OpenMP? Хотя OpenMP я юзаю часто, но обхожусь простейшими директивами, остальное забыл (или вообще не знал), просто не было нужно.

Спасибо


Название: Re: QThreadPool на OpenMP
Отправлено: Igors от Сентябрь 20, 2020, 11:53
Быстро нашел тему (https://stackoverflow.com/questions/52851985/run-thread-in-background-and-continue-main-with-openmp) где человеку надо именно это (даже 2). Но вот внятных ответов не увидел :)

Конечно напрашивается
Цитировать
#pragma omp task
По смыслу вроде "оно". Ладно, прильнем к доке, вот русская перепечвтка

Цитировать
Текущая нить выделяет в качестве задачи ассоциированный с директивой
блок операторов. Задача может выполняться немедленно после создания или
быть отложенной на неопределённое время и выполняться по частям. Размер
таких частей, а также порядок выполнения частей разных отложенных задач
определяется реализацией.
Так, ну а с main thread (где писали omp task) как же? Разве она остается свободной? Не вижу где это написано ???