Отправка данных всем работникам или получение данных, отправленных всем работникам
shared_data = labBroadcast(srcWkrIdx,data)
shared_data = labBroadcast(srcWkrIdx)
| |
| Широковещательные данные. Этот аргумент требуется только для того работника, который ведет трансляцию. Отсутствие этого аргумента указывает на то, что работник получает. |
| Широковещательные данные по мере их получения всеми другими работниками. |
shared_data = labBroadcast(srcWkrIdx,data) отправляет указанное data для всех исполняющих работников. Данные передаются от работника с помощью labindex == srcWkrIdx, и принимается всеми остальными работниками.
shared_data = labBroadcast(srcWkrIdx) получает на каждом исполняющем работнике указанный shared_data которое было отправлено от работника, чей labindex является srcWkrIdx.
Если labindex не является srcWkrIdx, то вы не включаете data аргумент. Это означает, что функция заключается в приеме данных, а не в их широковещании. Полученные данные, shared_data, идентичен для всех работников.
Эта функция блокирует выполнение до тех пор, пока не будет завершено участие работника в групповой широковещательной операции. Потому что некоторые работники могут завершить свой звонок labBroadcast перед началом работы других пользователей labBarrier если необходимо гарантировать, что все работники находятся в одной и той же точке программы.
В этом случае вещателем является работник, чей labindex является 1.
srcWkrIdx = 1; if labindex == srcWkrIdx data = randn(10); shared_data = labBroadcast(srcWkrIdx,data); else shared_data = labBroadcast(srcWkrIdx); end