随笔分类 - C++
摘要:重载的前缀自增运算符和后缀自增运算符有什么区别? 自增运算符"++"重载 C++ 是如何判断一个operator++函数是前缀自增运算符还是后缀自增运算符? 根据operator++(),()括号中的参数确定的。如果不填参数,就是前缀运算符;如果填入一个虚拟参数(如int),那就是后缀运算符。是前缀
阅读全文
摘要:## `std::move()` 在C++中,std::move() 用于将对象转换为右值引用。 关于左值、左值引用、右值、右值引用 左值是一个表示数据的表达式(比如变量名或者解引用的指针),程序可以获取其地址 传统的C++引用,即是左值引用。 C++11新增右值引用,用 && 表示。 右值是可出现
阅读全文
摘要:noexcept 问题 在数据库项目 CMU15445 中的 Project #2 中,有以下一个构造函数的实现: BasicPageGuard(BasicPageGuard &&that) noexcept; 这里为什么选择加 noexcept ? 解释 关键字 noexcept 在C++中用来指
阅读全文
摘要:C++内联函数 Inline Functions 内联函数和常规函数的区别 内联函数是C++为提高程序运行速度所做的一项改进。C++中的内联函数提供了一种告诉编译器尝试在每个调用点展开函数体的方法,以减少函数调用的开销。 具体如图: 什么时候使用内联函数更合适 小型函数:如果函数体非常小(如只有几行
阅读全文
摘要:异步编程 async 、future 基本概念和使用: 异步执行函数:std::async 可以异步执行一个函数,这意味着函数将在后台线程中执行,而当前线程可以继续执行其他任务。 返回值获取:你可以获得函数的返回值,或者得到一个 std::future 对象,它允许你在将来的某个时刻获取函数的结果。
阅读全文
摘要:线程池 Thread Pool 线程池简单来说就是用来管理多个线程的,以避免频繁开辟或销毁线程的情况。 以下是创建和使用线程池的基本步骤: 创建一个任务队列,用于存储待执行的任务。 创建一组线程,这些线程会从任务队列中获取任务并执行它们。 将任务提交到任务队列中,由线程池的线程异步执行。 线程池会不
阅读全文
摘要:互斥锁 std::mutex 当涉及到多线程编程时,互斥锁(Mutex)是一种同步机制,用于保护共享资源免受并发访问的影响。以下是一个简单的C++互斥锁示例: #include <iostream> #include <thread> #include <mutex> std::mutex mtx;
阅读全文
摘要:什么是线程? 在计算机科学中,线程是进程中的一个执行控制单元,也被称为执行路径。每个进程可以包含多个线程,每条线程并行执行不同的任务。线程是操作系统可识别的最小执行和调度单位。 进程和线程的区别 进程是程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。每个进程都有独立的地
阅读全文

浙公网安备 33010602011771号