参考文献:http://blog.csdn.net/sinat_27554409/article/details/48446611
老王说ROS

http://blog.csdn.net/yaked/article/details/50776224
rosspin、rosspinOnce及多线程订阅

1、 Ros:spin() VS ros::spinOnce() 区别

对于前者来说,spin(),运行一次之后,会一直停在那不动,所以spin()后面可以不用加任何东西。ROS 会自动的调用一些回调函数。

Spinonce 就灵活的多了,不过需要控制好它的调用周期,它比spin定时要准很多。

当我们用nh.createTimer创建定时函数的时候,发现其定时周期不可控,用rqt查看的。所以,我们改成spinOnce 的模式来定时调用。此能实现精准调用。

 

参考文档:老王说ROS(7)用ros做系统设计 http://blog.exbot.net/archives/1675

 

以上都是同步的,在一个线程当中。

2、多线程

在ROS当中,原作者是不推荐用多线程的,他建议用多进程,变成一个个节点的形式进行通信。

分为两种模式:同步和异步。

同步:MultiThreadSpinner s(4),一共5个线程。包括了主线程。

异步:AsyncSpinner s(4), 一共5个线程。包括了主线程。

 

利用Timer 可能会出现一些问题。

3、当程序当中有数据处理线程的时候,建议开辟 异步多线程 订阅,算法写在订阅函数里面。

当然,目前的处理当中,我更倾向于重新开辟一个线程,然后通过循环数组来进行数据交互。

Ros 中的多线程的更多相关文章

  1. 细说.NET 中的多线程 (一 概念)

    为什么使用多线程 使用户界面能够随时相应用户输入 当某个应用程序在进行大量运算时候,为了保证应用程序能够随时相应客户的输入,这个时候我们往往需要让大量运算和相应用户输入这两个行为在不同的线程中进行. ...

  2. 细说.NET中的多线程 (二 线程池)

    上一章我们了解到,由于线程的创建,销毁都是需要耗费大量资源和时间的,开发者应该非常节约的使用线程资源.最好的办法是使用线程池,线程池能够避免当前进行中大量的线程导致操作系统不停的进行线程切换,当线程数 ...

  3. [转载]ArcGIS Engine 中的多线程使用

    ArcGIS Engine 中的多线程使用 原文链接 http://anshien.blog.163.com/blog/static/169966308201082441114173/   一直都想写 ...

  4. python中的多线程【转】

    转载自: http://c4fun.cn/blog/2014/05/06/python-threading/ python中关于多线程的操作可以使用thread和threading模块来实现,其中th ...

  5. 拒绝卡顿——在WPF中使用多线程更新UI

    原文:拒绝卡顿--在WPF中使用多线程更新UI 有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainW ...

  6. java中的多线程——进度2

    package src;/*多线程总结:1,进程和线程的概念.    |--进程:    |--线程:2,jvm中的多线程体现.    |--主线程,垃圾回收线程,自定义线程.以及他们运行的代码的位置 ...

  7. Qt中的多线程编程

    http://www.ibm.com/developerworks/cn/linux/l-qt-mthrd/ Qt 作为一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功 ...

  8. 转:MFC中创建多线程

    MFC中创建多线程   MFC的多线程函数必须声明为静态的或者是全局函数(不同的在于全局函数不能访问类的私有静态成员,而静态类函数可以):但这样的线程函数只能访问静态的成员变量,要实现访问类的其他成员 ...

  9. C#中的多线程-入门

    概述与概念C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多 ...

随机推荐

  1. 使用 JavaScript 将网站后台的数据变化实时更新到前端-【知乎总结】

    问: 难道只能设置定时器每隔一秒通过 Ajax 向后台请求数据来实现吗? 答: 1. nodejs的 http://socket.io 支持上述 李宏训 所说的三种方式,另外还支持 Flash Soc ...

  2. 【linux高级程序设计】(第十五章)UDP网络编程应用 3

    UDP组播通信 组播IP地址: D类IP地址  1110.**********  224.0.0.1 ~ 239.255.255.255 组播MAC地址:低23位,直接对应IP地址, 从右数第24位为 ...

  3. [thinkphp]查看thinkphp系统定义的常量值

    echo 'MEMORY_LIMIT_ON: ' . MEMORY_LIMIT_ON . '<br>'; echo 'THINK_PATH: ' . THINK_PATH . '<b ...

  4. 洛谷——1164 小A点菜(背包方案数)

    大水题!! 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买 ...

  5. [POJ 3378] Crazy Thairs

    Link: POJ 3378 传送门 Solution: 按序列长度$dp$, 设$dp[i][j]$为到第$i$个数,符合要求的序列长度为$j$时的序列个数, 易得转移方程:$dp[i][j]=\s ...

  6. 分享 | 自定义属于自己的U盘图标

    文章目录 步骤 注意 想不想也可以自定义自己的U盘图标?其实,这并不难 步骤 在网上下载ICO格式的图标,也可以将自己喜欢的图片转换成ICO格式,并将图片命名为demo.ico: 点击这里打开记事本, ...

  7. iOS8下的远程推送

    本篇文章主要介绍了"iOS8下的远程推送",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下: 昨天做了一下远程推送,今天写下来,分享给需要的人.参考了很多篇文章,或许 ...

  8. 彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误、安装包与之前设备上的安装包签名不一致

    有时候开发的问题:会遇到在公司上班的时候,公司的IDE能跑程序,把程序拷贝回家,再跑一次,就会出现以下错误: INSTALL_FAILED_UPDATE_INCOMPATIBLE 原因:就是你的安装包 ...

  9. Linux文件名小写的好处(转)

    说明:来自老阮的<为什么文件名要小写>的文章,其实我觉得应该说是<Linux文件名为什么要小写>会更合适些. 一.可移植性 Linux 系统是大小写敏感的,而 Windows ...

  10. intel 硬盘加速技术

    Intel Smart Response Technology 混合硬盘技术 Intel Rapid Storage Technology SERVER: