Нужно сделать что-то вроде named семафора, но не счетчика.
К примеру программа А ему делает post а программы B1, B2, B3... сделавшие wait, ловят этот post и отрабатывают его. Причем если post послали 10 раз, то пропустить его задачи B1, B2, B3, могут, но потом дождаться нового post, и обработать его 1 раз. Ну и левых postов не должны поймать. Сколько задач B, не известно.
Ну, это как в микроконтроллере, прерывание создает кучу данных, и поднимает флаг. А по этому флагу, уже более низкоуровневые taskи должны эти данные обработать.
Еще в догонку. Если один процессор, записал что-то в память, по указателю, к примеру. То другой процессор, сразу же может читать, не нужно кеши сбрасывать?