回调函数原理

回调函数作用:

提供了异步编程的能力,使得代码更加模块化,易于理解和维护,比如网络请求、文件读写等。

回调函数原理:

函数2以函数指针的形式,作为参数传递给函数1,在函数1中的某个时机调用函数2。

以ros2的消息接收为例:

1. 在Prediction节点中创建了subsciption线程用来异步接收Perception的消息

2. std::bind将Prediction::Perception函数作为参数传递给create_subscription(),其中this表示当前对象中的Prediction::Perception()函数。


functions_perception_subscription_ = this->create_subscription<foxglove_msgs::msg::Perception>(
     "functions/perception", rclcpp::QoS(rclcpp::KeepLast(10), rmw_qos_profile_sensor_data),
      std::bind(&Prediction::Perception, this, std::placeholders::_1), options);

//call back
void Prediction::Perception(const foxglove_msgs::msg::Perception::SharedPtr msg) {
    std::lock_guard<std::recursive_mutex> lock(mutex_perception_msg_);
    latest_received_perception_.push_back(msg);
    if (latest_received_perception_data_.size() > 10) {
      latest_received_perception_data_.pop_front();
    }
  }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值