对于一些只订阅一个话题的简单节点来说,我们使用ros::spin()进入接收循环,每当有订阅的话题发布时,进入回调函数接收和处理消息数据.但是更多的时候,一个节点往往要接收和处理不同来源的数据,并且这些数据的产生频率也各不相同,当我们在一个回调函数里耗费太多时间时,会导致其他回调函数被阻塞,导致数据丢失.这种场合需要给一个节点开辟多个线程,保证数据流的畅通. 为了观察不同话题的消息被阻塞的情况,可以参考以下实验代码 https://github.com/wenglihong/wlh_ros_de