UDPProvider和UDPSearcher的启动顺序
来源:3-5 案例实操-局域网搜索案例-1
黎明的烬
2018-10-24
请教下老师,为什么先UDPSearche在启动UDPProvider,两个线程就会阻塞呢?
写回答
4回答
-
不对哦 两个线程?可以截图一下么?
理论来说如果没有启动提供者,去搜索也是没有意义的。
所以是先启动提供者,然后启动搜索。012018-10-24 -
Qiujuer
2018-10-24
哦 你说的这个哦 这个不是死锁。 这个是两个不同进程了,不是同进程之间的线程死锁。
两个都不忘下走 只是因为两者都是使用的同步io,现在等于是在等待io返回而已。
但是又因为两者顺序不同完美的错过了,所以永远等不到数据到来。
正确的顺序是:
提供者开启,并进入接收数据等待
搜索者开启,并进入发布数据状态,然后等待返回
此时提供者等待到了数据,所以接收数据,消费数据,并且返回数据然后搜索者得到返回数据,之后搜索者继续走后面的逻辑。
而顺序错了就成了:
搜索者发送数据,然后等待数据回来
提供者开启,等待到达数据;但是由于发送者在提供者启动之前就把数据发送了,所以提供者不可能等到数据了,也就不会回送数据了。所以搜索者也得不到数据了,然后两者就都GG了。
10 -
黎明的烬
提问者
2018-10-24
大概就是这样子
022018-10-24 -
不想做程序猿
2018-10-24
先启动provider然后再启动searche
00
相似问题