zoukankan      html  css  js  c++  java
  • 有关ros::spin()和ros::spinonce()若干感受

    ros::spinonce()一般与loop_rate.sleep()同时出现,用来控制处理回调函数的频率,并且没有消息就收来时,就会程序堵塞,不会占用CPU资源。

    ros::spin(),用于回调函数的处理,并且执行这段程序就会进入无限次循环(消息来一次,回调函数就会立即处理一次,没有阅读到消息的时候,spin循环将会堵塞,不会占用CPU资源),直到ctrl_c来临,或者其他终止信号来临。一般所有的程序都写在这段语句之前,因为其之后的程序,不会被执行。

    两条语句与publish没有关系,只与回调函数有关系。

    两者都是为回调函数的消息创建队列依次去执行。区别就是spin是个无限循环,只要队列里消息在,程序就会立即执行回调函数。

    而spinonce是根据程序所设的频率,在while里依次调用spinonce,根据队列里消息的前后顺序,依次调用回调函数。

    总结两个关键词(消息队列与轮转执行,回调函数)。

  • 相关阅读:
    UVa LA 2965
    UVa LA 3695
    UVa LA 3029 City Game 状态拆分,最大子矩阵O(n2) 难度:2
    Uva LA 3177
    Uva LA 3902
    Uva 11520
    UVa Live 3635
    python学习笔记-day05 字典
    python学习笔记-day04 元组
    python学习笔记 day04 列表增删改查
  • 原文地址:https://www.cnblogs.com/agvcfy/p/9314682.html
Copyright © 2011-2022 走看看