Нам нужно знать больше, но в основном вам просто нужно убедиться, что рабы не блокируют друг друга.Детали этого в C ++ будут задействованы, но первое, что нужно сделать, это спросить себя, каков алгоритм.Простейший случай будет, если вас не волнует ожидание рабов, и в этом случае у вас есть
while still tasks to do
launch a task on a slave
Если вам нужно выполнить только одну работу на слейве, тогда вам понадобитсячто-то вроде массива флагов, по одному на каждое ведомое устройство
slaves : array 0 to (number of slaves - 1)
initialize slaves to all FALSE
while not done
find the first FALSE slave -- it's not in use
set that slave to TRUE
launch a job on that slave
check for slaves that are done
set that slave to FALSE
Теперь, если у вас несколько потоков, вы можете сделать это в два потока
while not done
find the first FALSE slave -- it's not in use
set that slave to TRUE
launch a job on that slave
while not done
check for slaves that are done
set that slave to FALSE