前面我们学习了点对点通信,那是关于两个点的通信.今天,我们学习多个点之间的通信.首先,我们学习广播.
所谓广播,就是说某个进程要向其他所有进程发送数据,而不是单独某个进程.
显然,一次的广播可以等价为许多次的点对点通信,我们可以用学过的send和recv去实现广播.
代码:
运行结果:
我们看见,5个进程中,除了要广播的进程0,后面4个进程都收到了进程0发送的一个列表.
效率?
但这样就完了吗?这样实现有什么问题?答案是效率.
用时间复杂度去说话,假设拷贝一份数据是O(1)复杂度,有n个进程.那么后面4个进程的时间复杂度是O(1),而进程0的时间复杂度是O(n).
在单机上跑这n个进程好像这没什么所谓,CPU始终在工作,时间复杂度也是O