摘要: 构造函数constructor explicit的引入,是为了能够制止“单一参数的constructor”被当作一个conversion运算符 带有默认构造函数的对象成员 若一个类中包含对象成员,且该对象有默认构造函数,此时: 若该类没有构造函数 则编译器会合成一个默认构造函数,且发生在真正调用时 阅读全文
posted @ 2024-11-01 20:11 sgqmax 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 一、object typedef struct{ float x; float y; float z; }Point3d; 可以有以下方法打印上述类型字段: 定义函数 void print_point3d(const Point3d* pd){ printf("(%g,%g,%g)", pd->x, 阅读全文
posted @ 2024-11-01 20:11 sgqmax 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 在许多为了性能和效率的场景下,需要开发一些lock-free的算法和数据结构 atomic_flag 原子布尔类型,只支持 test-and-set 和 clear 操作 构造函数 atomic_flag()noexcept=default; atomic_flag(const atomic_fla 阅读全文
posted @ 2024-11-01 20:10 sgqmax 阅读(8) 评论(0) 推荐(0) 编辑
摘要: std::future 在介绍promise和packaged_task时多次提到future,现在详细介绍该类型 std::future用来获取异步任务的结果,是一种线程间同步的方式,通常由某个Provider创建,Provider在某个线程中设置共享状态的值,与该共享状态相关联的future对象 阅读全文
posted @ 2024-11-01 20:09 sgqmax 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 头文件包含: Providers类 std::promise std::packaged_task Futures类 std::future std::shared_future Providers函数 std::async() 其他类型 std::future_error std::future_ 阅读全文
posted @ 2024-11-01 20:09 sgqmax 阅读(12) 评论(0) 推荐(0) 编辑
摘要: std::packaged_task std::packaged_task包装一个可调用对象,并允许获取该可调用对象计算的结果,可调用对象内部包含两个基本元素: 1.被包装的任务 任务是一个可调用对象,如函数指针或函数对象,该对象的执行结果会传递给共享状态 2.共享状态 用于保存任务的返回结果,并可 阅读全文
posted @ 2024-11-01 20:08 sgqmax 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 条件变量 类似于pthread库中的pthread_cond_*()提供的功能,C++ 11标准提供了两种表示条件变量的类,分别是condition_variable和condition_variable_any,定义在头文件<condition_variable>中 std::condition_ 阅读全文
posted @ 2024-11-01 20:07 sgqmax 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 互斥量 C++11互斥锁定义在<mutex>头文件中,提供了独占资源的特性 C++11头文件中定义的互斥量 互斥量 说明 mutex 基本互斥量 recursive_mutex 递归互斥量 timed_mutex 定时互斥量 recursive_timed_mutex 递归定时互斥量 std::mu 阅读全文
posted @ 2024-11-01 20:06 sgqmax 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 进程与线程 进程:系统资源分配的最小单元,通常被定义为一个正在运行的程序实例 线程:系统任务调度的最小单元 进程间通信:管道,信号量,信号,消息队列,共享内存,套接字 线程间通信:锁机制,信号量机制,信号机制,屏障 同步:保证任务片段的先后顺序 互斥:为了保证资源在同一时刻只能被一个线程使用,即数据 阅读全文
posted @ 2024-11-01 20:04 sgqmax 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 信号 信号是UNIX系统里常用的进程间异步通信方式 asio库提供类,利用异步IO的方式处理UNIX信号 类原型 class signal_set{ public: explicit signal_set(io_service& io_service); signal_set(io_service& 阅读全文
posted @ 2024-11-01 20:00 sgqmax 阅读(5) 评论(0) 推荐(0) 编辑
摘要: boost.pool boost.pool库基于简单分隔存储的思想实现了一个快速、紧凑的内存池 不仅能够管理大量对象,还可以用作STL的内存分配器,在需要大量分配或释放小对象时效率很高,且不需要考虑delete 包含4个组成部分 简单pool 分配类实例object_pool 单件内存池single 阅读全文
posted @ 2024-11-01 19:59 sgqmax 阅读(2) 评论(0) 推荐(0) 编辑
摘要: asio 基于操作系统提供的异步机制,不要求使用多线程和锁,采用前摄器proactor设计模式,实现了可移植的异步IO操作 目前asio主要关注于网络通信方面,封装了socket API,提供了TCP、UDP、ICMP等网络通信协议,但asio的异步操作不局限于网络编程,还支持UNIX信号,定时器, 阅读全文
posted @ 2024-11-01 19:58 sgqmax 阅读(4) 评论(0) 推荐(0) 编辑
摘要: ROS2小乌龟测试 下载turtlesim功能包 source /opt/ros/humble/setup.bash git clone https://github.com/ros/ros_tutorials.git -b humble-devel # 创建工作空间 mkdir -p turtle 阅读全文
posted @ 2024-11-01 19:56 sgqmax 阅读(24) 评论(0) 推荐(0) 编辑
摘要: colcon工具相对于bazel等,效率不算高,但是其模块化做得好,易用性程度高 通过解析package.xml获取配置信息,包括描述规范,名称,版本,构建方法和测试方法等 有关依赖会附有_depend扩展名说明 如构建依赖build_depend 构建工具依赖buildtool_depend 测试 阅读全文
posted @ 2024-11-01 19:55 sgqmax 阅读(15) 评论(0) 推荐(0) 编辑
摘要: ROS2工作空间与功能包 ros2是基于分布式设计的模块化软件中间件,各个功能分布在不同软件包,并在不同仓库中维护,通过XML文件描述各个功能包的依赖关系 CMake可以配置自动化测试,下载并构建依赖库,运行特定脚步和获取环境变量并配置宏定义等 一个进程可以有若干个节点,一个节点可以提供若干个不同的 阅读全文
posted @ 2024-11-01 19:54 sgqmax 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 节点 ROS2中,节点是一个抽象的实体,可以代表某类特定功能的抽象集合体,可以存在于进程或线程中 是ROS2的基础功能的载体,所有通信都需要通过节点来实现 节点和节点执行器 节点执行器executor是协调和调度节点运作的实体,并响应各类通信的回调结果 每个进程有一个或多个节点执行器,每个节点执行器 阅读全文
posted @ 2024-11-01 19:54 sgqmax 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 一. 前言 Lisp语言 Lisp诞生的时候包含了9中新思想,其中一些被用于其他高级语言,我们已经习以为常,至今还有2种是Lisp独有的。 条件结构 (即if-else结构),在Fortran 1时只有基于底层机器指令实现的goto结构。 函数也是一种数据类型 Lisp语言中,函数跟整数和字符串一样 阅读全文
posted @ 2024-11-01 19:13 sgqmax 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 随机数生成设备 随机数生成设备random_device,生成非确定性随机数,在Linux中通过读取/dev/urandom设备,Windows中使用rand_s 重载了()运算符,每次调用会生成一个min()到max()之间的高质量随机数种子,若在Linux(Unix Like)下,可以使用这个生 阅读全文
posted @ 2024-11-01 19:08 sgqmax 阅读(5) 评论(0) 推荐(0) 编辑
摘要: ratio 先看一下ratio的定义 template<intmax_t N,intmax_t D=1> class ratio; ratio是由非类型参数定义的模板,用来定义一个比率N/D,如ratio<1,-2>表示-0.5 标准库中定义的常用ratio类型 type definition 说明 阅读全文
posted @ 2024-11-01 19:08 sgqmax 阅读(2) 评论(0) 推荐(0) 编辑
摘要: Emacs安装 # Install essential build tools sudo apt-get install build-essential texinfo libx11-dev libxpm-dev libjpeg-dev libpng-dev libgif-dev libtiff-d 阅读全文
posted @ 2024-11-01 14:29 sgqmax 阅读(2) 评论(0) 推荐(0) 编辑