摘要:文章目录 1. function和bind 1.1 function使用方法 1.2 bind 2. 可变模板参数 2.1 可变模板参数函数 2.2 可变模板参数的展开 1. function和bind C++中的function和bind是为了更方便地进行函数对象的封装和调用而设计的。 funct
阅读全文
随笔分类 - c++11/14/17/20
摘要:目录 前言 C++左值和右值 二、右值引用 二、右值引用 前言 对于C++的左值和右值相信很多人都没有一个很透彻的了解,之前我也是不懂的时候查阅了好多文章,但是讲完我还是一头雾水,直到我遇到一篇宝藏文章,讲的左值右值的关系以及Move函数的用法是相当的清楚,文章链接在这,话不多说讲解一下文章链接 C
阅读全文
摘要:智能指针 智能指针解决的问题 智能指针分类 shared_ptr 内存模型图 shared_ptr示例 shared_ptr含义 shared_ptr基本用法及常用函数 常用函数 智能指针的构造,初始化-make_shared explicit 获取原始指针get 指定删除器 删除动态数组 shar
阅读全文
摘要:基础知识: 智能指针的设计与实现: 1.智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。 2.每次创建类的新对象时,初始化指针并将引用计数置为1; 3/当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数; 4.对一个对象进行赋值时,赋
阅读全文
摘要:一、简单使用 C++11提供了一套精练的线程库,小巧且易用。运行一个线程,可以直接创建一个std::thread的实例,线程在实例成功构造成时启动。若有底层平台支持,成员函数std::thread::native_handle()将可提供对原生线程对象运行平台特定的操作。 #include <thr
阅读全文
摘要:根据当前时间戳与机器启动至今的时间长度相减,可以精确计算出机器启动时刻的时间戳epochtime 代码 #include <iostream> #include <stdio.h> #include <time.h> #include <chrono> int main() { #ifdef __l
阅读全文
摘要:本教程将介绍如何使用C++11 std::thread设置线程的堆栈大小。C++11 std::thread是一种轻量级的多线程实现,它的灵活性使得它成为一个流行的选择。但是,在某些情况下,您可能需要设置线程的堆栈大小来满足您的需求。 在开始本教程之前,我们假设您已经熟悉了C++11 std::th
阅读全文
摘要:在采用C++编写算法时,经常需要判断两个浮点数是否相等。由于计算精度的原因,采用“==”运算符是不可行的。下面给出采用C++11标准判断两个浮点数是否相等的代码: // Test whether two float or double numbers are equal. // ulp: units
阅读全文
摘要:【并发编程二十一】c++20协程(co_yield、co_return、co_await ) 一、协程分类 1、控制机制划分 2、有栈(stackfull)/无栈(stackless)划分 二、c++20协程 三、co_yield 1、demo 2、相关知识点介绍 四、co_return 五、co_
阅读全文
摘要:【并发编程二十】协程(coroutine) 一、线程的缺点 二、协程 三、优点 四、个人理解 五、协程库 1、window系统 2、unix系统(包括linux的各个版本) 2.1、makecontext 2.2、swapcontext 2.3、setcontext 3、第三方库 3.1、Boost
阅读全文
摘要:【并发编程六】c++进程通信——信号量(semaphore) 一、概述 二、信号量 三、原理 四、过程 1、进程A过程 2、进程B过程 五、demo 1、进程A 2、进程B 六、输出 七、windows api介绍 1. 创建信号量 CreateSemaphore() 2. 打开信号量 OpenSe
阅读全文
摘要:【并发编程十二】c++20线程同步——信号量(semaphore) 一、互斥 二、条件变量 三、future 四、信号量 1、信号量原理 2、c++ 20 信号量 3、demo 简介:本篇文章,是线程同步的最后一篇。我们详细的介绍下c++标准库提供的线程同步方法——信号量(semaphore)。 一
阅读全文
摘要:【并发编程十一】c++线程同步——future 一、互斥 二、条件变量 三、future 1、promise 1.1、子线程设值,主线程获取 1.2、主线程设置值,子线程获取 2、async 2.1、不开新线程的async 2.2、开新线程的async 3、packaged_task 3.1、不使用
阅读全文
摘要:左值(lvalue)与右值(rvalue) 左值与右值的概念其实在C++0x中就有了。概括的讲,凡是能够取地址的可以称之为左值,反之称之为右值,C++中并没有对左值和右值给出明确的定义,从其解决手段来看类似上面的定义,当然我们还可以定义为:有名字的对象为左值,没有名字的对象为右值。 class A
阅读全文
摘要:1.std::move std::move - cppreference.comzh.cppreference.com/w/cpp/utility/move std::move主要使用在以下场景: C++ 标准库使用比如vector::push_back 等这类函数时,会对参数的对象进行复制,连数
阅读全文
摘要:最近看代码发现,在多线程中实现有关throttle和阻塞等有关的功能时,条件变量的使用是最常见的。 首先先对条件变量有个基本的认识 条件变量的基础知识 条件变量std::condition_variable定义在头文件<condition_variable>中。 条件变量用于阻塞一个或多个线程,直到
阅读全文
摘要:摘要 C++11标准从发布到现在已经快10年了。笔者在工作中陆陆续续学习并应用了移动语义(move semantics),智能指针(unique_ptr<>, shared_ptr<>),lamda等C++11的新特性。总体感觉还是真香。最近因为项目开发,要搭建多线程的自动化测试,于是尝试使用了条件
阅读全文
摘要:【多线程】C++11多线程(简约但不简单) 目录 一、简单使用 1、线程参数 2. 类成员函数做为线程入口 3. join: 等待线程执行完成 4. 线程暂停 5. 线程停止 二、进阶(更多你可能需要知道的) 1. 拷贝
阅读全文
摘要:文章目录 1 原子操作 2 C++11原子变量 3 使用原子变量 3.1 没有使用线程互斥的数据操作 3.2 使用互斥量保证线程互斥 3.3 使用原子量std::atomic保证数据互斥 1 原子操作 原子操作:一个独立不可分割的操作。多线程编程需要保证线程安全,而线程安全一个很重要的特性就是原子性
阅读全文
摘要:What is the lifetime of a C++ lambda expression? (我已经阅读了C ++中lambda派生的隐式仿函数的生命周期是什么?已经没有回答这个问题了。) 我理解C ++ lambda语法只是用于创建具有调用操作符和某个状态的匿名类的实例的糖,并且我理解该状态
阅读全文