ros::spin()之前的程序执行不完之前的带参程序加入到单独的线程中
时间: 2024-04-30 07:23:47 浏览: 100
使用单独的线程执行程序代码
可以使用C++的std::thread来创建一个新的线程执行带参程序,示例如下:
```c++
#include <thread>
#include <ros/ros.h>
void myFunction(int arg) {
// 带参程序
ROS_INFO("myFunction with arg %d is running", arg);
}
int main(int argc, char** argv) {
ros::init(argc, argv, "my_node");
// 创建一个新的线程执行带参程序
std::thread myThread(myFunction, 123);
// 主线程执行其他操作
ros::spin();
// 等待新线程执行完毕
myThread.join();
return 0;
}
```
在上面的示例中,我们创建了一个新的线程执行myFunction函数,并传入一个整数参数123。主线程执行其他操作,如调用ros::spin()等待ROS节点的回调函数执行。当需要退出程序时,主线程等待新线程执行完毕并结束程序。
阅读全文