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

    在同一个节点,没定义callback_group的情况下,有多个回调函数,请问算是多个线程么

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 多线程
    4
    13
    1.3k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • LorryL
      Lorry @Zln4ever
      最后由 编辑

      @Zln4ever 在 在同一个节点,没定义callback_group的情况下,有多个回调函数,请问算是多个线程么 中说:

      监听回

      在main函数中使用MultiThreadedExecutor 多线程执行器,且在同一节点分别定义了一个监听回调和定时回调,没设置callback_group,请问是不是算两个线程且,互不干扰--->不算

      第二种情况要看情况,最好还是指定回调组以及多线程执行器

      空白空 Zln4everZ 2 条回复 最后回复 回复 引用 0
      • 空白空
        空白 @Lorry
        最后由 编辑

        @Lorry 你好,我也想问一下,什么情况下要使用单线程执行器,什么时候要用多线程执行器?如果没有写是默认使用的单线程执行器吗?之前没有学过这类的编程,只学过c,不是特别了解

        小鱼小 1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @空白
          最后由 小鱼 编辑

          @空白 可以看看我在介绍多线程执行器之前介绍的多线程死锁问题,单线程不能解决时就用多线程和多线程执行器

          https://fishros.com/d2lros2foxy/#/chapt4/4.10服务实现(C++)?id=_233-死锁


          @空白 @Zln4ever 热乎的:https://www.fishros.org.cn/forum/topic/895

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          空白空 1 条回复 最后回复 回复 引用 1
          • 空白空
            空白 @小鱼
            最后由 编辑

            @小鱼 收到,谢谢小鱼😊

            1 条回复 最后回复 回复 引用 0
            • Zln4everZ
              Zln4ever @Lorry
              最后由 编辑

              @Lorry 就是说假如我这个节点有一个定时回调和一个监听回调,我要实现多线程的话,就要分别定义各自的线程组是吧。

              LorryL 1 条回复 最后回复 回复 引用 0
              • LorryL
                Lorry @Zln4ever
                最后由 编辑

                @Zln4ever 首先使用多线程执行器,然后对于每个回调,指定各自的回调组

                Zln4everZ 空白空 2 条回复 最后回复 回复 引用 0
                • Zln4everZ
                  Zln4ever @Lorry
                  最后由 编辑

                  @Lorry 好的谢谢老哥

                  1 条回复 最后回复 回复 引用 0
                  • 空白空
                    空白 @Lorry
                    最后由 编辑

                    @Lorry 那单纯的定时和监听是不是单线程也能实现呢,因为定时和监听之间肯定存在时间差,比如说我先监听,然后以低于监听的速度定时发布内容?

                    LorryL 1 条回复 最后回复 回复 引用 0
                    • LorryL
                      Lorry @空白
                      最后由 编辑

                      @空白 最好不要,我之前遇到过丢失数据的问题。ros的多线程我理解,它不是直接开线程,线程控制是ros自己管理的,必要时才会开新线程

                      空白空 1 条回复 最后回复 回复 引用 0
                      • 空白空
                        空白 @Lorry
                        最后由 编辑

                        @Lorry 那就是说,如果资源足够的情况下,遇到话题服务动作相关的数据处理,最好都是使用多线程来完成?

                        LorryL 1 条回复 最后回复 回复 引用 0
                        • LorryL
                          Lorry @空白
                          最后由 编辑

                          @空白 回调就只有一个的话也没必要多线程吧

                          空白空 1 条回复 最后回复 回复 引用 0
                          • 空白空
                            空白 @Lorry
                            最后由 编辑

                            @Lorry 嗯嗯,我大概明白了,谢谢

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