Отправляйте данные всем работникам или получайте данные, отправляемые всем работникам
shared_data = labBroadcast(srcWkrIdx,data)
shared_data = labBroadcast(srcWkrIdx)
| The |
| Данные, которые транслируются. Этот аргумент требуется только для работника, осуществляющего широковещательную передачу. Отсутствие этого аргумента указывает, что рабочий процесс получает. |
| Широковещательные данные, полученные от всех других работников. |
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