摘要:
std::future 在介绍promise和packaged_task时多次提到future,现在详细介绍该类型 std::future用来获取异步任务的结果,是一种线程间同步的方式,通常由某个Provider创建,Provider在某个线程中设置共享状态的值,与该共享状态相关联的future对象 阅读全文
摘要:
头文件包含: Providers类 std::promise std::packaged_task Futures类 std::future std::shared_future Providers函数 std::async() 其他类型 std::future_error std::future_ 阅读全文
摘要:
std::packaged_task std::packaged_task包装一个可调用对象,并允许获取该可调用对象计算的结果,可调用对象内部包含两个基本元素: 1.被包装的任务 任务是一个可调用对象,如函数指针或函数对象,该对象的执行结果会传递给共享状态 2.共享状态 用于保存任务的返回结果,并可 阅读全文
摘要:
条件变量 类似于pthread库中的pthread_cond_*()提供的功能,C++ 11标准提供了两种表示条件变量的类,分别是condition_variable和condition_variable_any,定义在头文件<condition_variable>中 std::condition_ 阅读全文
摘要:
互斥量 C++11互斥锁定义在<mutex>头文件中,提供了独占资源的特性 C++11头文件中定义的互斥量 互斥量 说明 mutex 基本互斥量 recursive_mutex 递归互斥量 timed_mutex 定时互斥量 recursive_timed_mutex 递归定时互斥量 std::mu 阅读全文
摘要:
进程与线程 进程:系统资源分配的最小单元,通常被定义为一个正在运行的程序实例 线程:系统任务调度的最小单元 进程间通信:管道,信号量,信号,消息队列,共享内存,套接字 线程间通信:锁机制,信号量机制,信号机制,屏障 同步:保证任务片段的先后顺序 互斥:为了保证资源在同一时刻只能被一个线程使用,即数据 阅读全文
摘要:
信号 信号是UNIX系统里常用的进程间异步通信方式 asio库提供类,利用异步IO的方式处理UNIX信号 类原型 class signal_set{ public: explicit signal_set(io_service& io_service); signal_set(io_service& 阅读全文
摘要:
boost.pool boost.pool库基于简单分隔存储的思想实现了一个快速、紧凑的内存池 不仅能够管理大量对象,还可以用作STL的内存分配器,在需要大量分配或释放小对象时效率很高,且不需要考虑delete 包含4个组成部分 简单pool 分配类实例object_pool 单件内存池single 阅读全文
摘要:
asio 基于操作系统提供的异步机制,不要求使用多线程和锁,采用前摄器proactor设计模式,实现了可移植的异步IO操作 目前asio主要关注于网络通信方面,封装了socket API,提供了TCP、UDP、ICMP等网络通信协议,但asio的异步操作不局限于网络编程,还支持UNIX信号,定时器, 阅读全文
摘要:
ROS2小乌龟测试 下载turtlesim功能包 source /opt/ros/humble/setup.bash git clone https://github.com/ros/ros_tutorials.git -b humble-devel # 创建工作空间 mkdir -p turtle 阅读全文