Добрый деньИспользую OpenMP и весьма доволен этой библиотекой. Не могу сообразить как мне распараллелить деление дерева, алгоритм стандартный:- Есть очередь нодов, (вначале только с 1 нодом). - Извлекаем первый нод из очереди, делим его на 2 нода- Подсчитываем приоритеты получившихся нодов, и, если надо, добавляем их в очередь - Опять извлекаем первый нод (нод с наивысшим приоритетом) из очереди и.т.дНод хранит список примитивов которые его пересекают. Приоритет вычисляется как число примитивов в ноде помноженное на его размер. Все работает. Теперь как задействовать N ниток? Понятно что помещение в очередь и извлечение из нее должны быть защищены блокировками. Возможна ситуация когда очередь пуста, но это не значит "конец расчета" - нод(ы) делятся в др. нитках. Как бы мне это все организовать попроще и покрасивее?Спасибо
|