鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    关于ROS2节点中多个服务并行的问题

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2 多线程
    1
    1
    465
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • R
      五谷鱼粉
      最后由 编辑

      比如在一个node中创建了ABC三个服务,想要让他们能够并行执行的时候,我是给node加了MultiThreadedExecutor,然后所有的service都加了ReentrantCallbackGroup;这样确实可以用三个client同时向这三个服务发送请求,在终端中是可以看到node接收到了这三个请求;

      但是如果想要实现:A和B两个服务是可以被两个client同时发送请求进行处理,但是当处理C服务请求的时候,A和B是不可以执行的。理想的处理方式是,在处理A和B请求的时候,如果收到C的请求,那么就等待A和B处理完之后再处理C,反之亦然。

      我尝试过把C的callback_group变量去掉,我这里的服务的回调函数会去订阅相机的图片,这里就会提示订阅不到;如果把C的callback_group变量改为MutuallyExclusiveCallbackGroup,感觉并没有任何影响,还是可以同时请求ABC三个服务。

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS