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

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

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

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

      LorryL 1 条回复 最后回复 回复 引用 0
      • 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