2012-03-21 6 views
0

Предположим, что у нас есть генетический алгоритм канонического острова с кольцевой топологией. Я использую C++, PPL и MS Visual Studio 2010.Можно ли использовать parallel_for и concurrent_vector для организации асинхронного алгоритма GA острова?

Удобно работать с parallel_for из библиотеки PPL. Какие программные примитивы я должен использовать, если на острове должен появиться лучший текущий человек от его соседа, когда флаг стагнации включен? Я не хочу проверять массив флагов стагнации после завершения цикла parallel_for, я хочу кормить «голодные» острова на лету. Имеет ли PPL средства для этой цели? На каждом острове есть указатель на его neihbour. Мне нужен какой-то критический раздел в методе Evolve() для блокировки метода GetBestIndividual(). Evolve() вызывается параллельно (parallel_for cycle для островов).

ответ

0

Вы можете использовать объект critical_section. Это часть библиотеки PPL.