当前位置: 首页 > news >正文

C++高频知识点(十四)

文章目录

  • 66. 程序什么时候应该使用多线程,什么时候单线程效率高?
  • 67. 死锁的原因和避免
    • 死锁的避免
    • 预防死锁:破坏持有并等待条件
  • 68. TCP拥塞控制
    • 四个阶段轮换过程描述
  • 69. C++的内存管理
  • 70. 构造函数可以是虚函数吗,析构函数呢

66. 程序什么时候应该使用多线程,什么时候单线程效率高?

在这里插入图片描述
在这里插入图片描述

67. 死锁的原因和避免

在这里插入图片描述
在这里插入图片描述

死锁的避免

在这里插入图片描述

预防死锁:破坏持有并等待条件

#include <iostream>
#include <thread>
#include <mutex>std::mutex mutex1;
std::mutex mutex2;void thread1() {while (true) {std::lock_guard<std::mutex> lock1(mutex1); // 持有资源1std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 模拟一些工作std::lock_guard<std::mutex> lock2(mutex2); // 持有资源2// 执行临界区代码std::cout << "Thread 1 working..." << std::endl;}
}void thread2() {while (true) {std::lock_guard<std::mutex> lock2(mutex2); // 持有资源2std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 模拟一些工作std::lock_guard<std::mutex> lock1(mutex1); // 持有资源1// 执行临界区代码std::cout << "Thread 2 working..." << std::endl;}
}int main() {std::thread t1(thread1);std::thread t2(thread2);t1.join();t2.join();return 0;
}

在这个示例中,线程1和线程2分别以相反的顺序获取两个互斥锁,容易导致死锁。为了避免死锁,可以修改代码,使线程在获取资源时遵循相同的顺序。

在这里插入图片描述
在这里插入图片描述

68. TCP拥塞控制

TCP拥塞控制是为了防止网络过载和拥塞而采取的一系列机制和算法。TCP拥塞控制的目标是高效地使用网络资源,同时避免网络拥塞导致的数据丢失和传输延迟。

TCP拥塞控制主要包括四个关键算法:慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四个阶段轮换过程描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

69. C++的内存管理

C++的内存管理涉及多个方面,包括栈内存和堆内存的分配与管理、对象的生命周期管理、以及避免和处理内存泄漏

RAII (Resource Acquisition Is Initialization),中文含义为『资源获取即初始化』,是C++中一种非常重要的资源管理技术。
在这里插入图片描述

在这里插入图片描述

70. 构造函数可以是虚函数吗,析构函数呢

在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

http://www.lryc.cn/news/610369.html

相关文章:

  • 文件包含篇
  • Linux中netstat详细使用指南
  • MySQL偏门但基础的面试题集锦
  • webm 读取解析
  • 并发编程常用工具类(上):CountDownLatch 与 Semaphore 的协作应用
  • Linux 使用 firewalld :开放端口与常用操作指南
  • 【机器学习】(算法优化二)提升算法之:AdaBoost与随机梯度
  • C++多线程同步:深入理解互斥量与事件机制
  • 【node】token的生成与解析配置
  • 笔试——Day28
  • 我用一个 Postgres 实现一整套后端架构!
  • LeetCode 分类刷题:16. 最接近的三数之和
  • 【Unity】协程 Async
  • 体育数据创业:用 API + 比分网,低成本快速验证
  • Mirror学习笔记
  • Linux RAID 存储技术
  • GaussDB 数据库架构师(十二) 资源规划
  • 用户与组管理命令
  • 小实验:按键点灯(中断法)
  • 【笔记】ROS1|5 ARP攻击Turtlebot3汉堡Burger并解析移动报文【旧文转载】
  • traefik网关鉴权中间件转发multipart/form-data请求的multipart: NextPart: EOF问题
  • LLM大模型时代:生活服务领域的“生存革命“与新生态重构
  • 深度学习-卷积神经网络CNN-卷积层
  • 探索机器学习在医疗领域的应用与挑战
  • Flask 项目 Windows 服务器部署全流程
  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • RTX5060显卡安装cuda版本PyTorch踩坑记录
  • 深度解析:CPU 与 GPU 上的张量运算,为何“快”与“慢”并非绝对?
  • chatgpt plus简单得,不需要求人,不需要野卡,不需要合租,不需要昂贵的价格
  • 从 0 到 1 开发图书管理系统:飞算 JavaAI 让技术落地更简单