ApolloAuto / apollo-platform

Collections of Apollo Platform Software
733 stars 386 forks source link

节点在发布消息时被阻塞 #69

Open CSdidi opened 6 years ago

CSdidi commented 6 years ago

您好!我在使用apollo-platform时发现,如果级联的节点较多,节点在发布消息时会被阻塞。例如:A->B->C->D->...,其中A是起始节点,向B pub消息,B在回调函数中将收到的消息pub给C,以此类推。我们发现,对普通字符串消息而言,节点D在收到C的消息再pub时,被阻塞,即一直停留在publish函数上。

附件中是我的测试程序: test_pub.tar.gz

======================= 另外,如果发布的消息内容较大(例如图片),这个现象则更加明显。对于480p分辨率的图片,只能级联发布两个节点;720p图片,只能级联发布一个节点;而1080p图片,则从起始节点都发不出去。

与此相比,ROS则不存在这个问题,它支持多层节点的级联发布,无论普通字符串消息还是图片消息。我猜测是不是apollo-platform分配共享内存时出现了问题。

我的实验环境是原生的apollo docker,分别实验了apollo 2.0版本的apolloauto/apollo:dev-x86_64-20171103_2113和1.0版本的apolloauto/apollo:dev-x86_64-20171103_2113,我分别采用了以下两种方式使用apollo-platform: (1)直接source /home/tmp/setup.sh,然后编译我的测试程序,运行; (2)从源代码编译apollo-platform,然后编译我的测试程序,运行。 但两种方式均出现消息发布被阻塞的现象。我不确定是环境配置所导致,还是apollo-platform自身的问题。望解答,谢谢!