Связь по принципaм "Многие-к-одному и многие-ко-многим"
Начните получать сообщения на канале, построенном по принципу "многие-к-одному".
In[1]:=
![Click for copyable input](assets.ru/many-to-one-and-many-to-many-communication/In_1.png)
listener = ChannelListen["master"]
Out[1]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_1.png)
Отправляйте сообщения из нескольких сессий, например, из параллельных ядер на одном и том же компьютере, через канал связи.
In[2]:=
![Click for copyable input](assets.ru/many-to-one-and-many-to-many-communication/In_2.png)
ParallelEvaluate[ChannelSend["master", $KernelID]]
Out[2]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_2.png)
Полученные сообщения.
In[3]:=
![Click for copyable input](assets.ru/many-to-one-and-many-to-many-communication/In_3.png)
listener["Message", All]
Out[3]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_3.png)
Диаграмма обмена сообщениями.
код на языке Wolfram Language целиком
Out[5]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_4.png)
Прослушивайте сообщения на том же канале связи в нескольких параллельных сессиях.
In[6]:=
![Click for copyable input](assets.ru/many-to-one-and-many-to-many-communication/In_6.png)
ParallelEvaluate[l = ChannelListen["all"]]
Out[6]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_5.png)
Параллельные ядра отправят свои идентификаторы каналу.
In[7]:=
![Click for copyable input](assets.ru/many-to-one-and-many-to-many-communication/In_7.png)
ParallelEvaluate[ChannelSend["all", $KernelID]]
Out[7]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_6.png)
Сообщения, полученные слушателями, с их соответствующими идентификаторами ядра.
In[8]:=
![Click for copyable input](assets.ru/many-to-one-and-many-to-many-communication/In_8.png)
ParallelEvaluate[$KernelID -> l["Message", All]]
Out[8]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_7.png)
Диаграмма обмена сообщениями.
код на языке Wolfram Language целиком
Out[9]=
![](assets.ru/many-to-one-and-many-to-many-communication/O_8.png)