C++并发编程 2:线程管理

线程的创建 线程通过构建std::thread对象而启动,std::thread的构造函数: // 默认构造 std::thread t1; // 使用任意可调用类型构造 std::thread t2(F&& f, Args&&... args); // 使用另外一个线程移...

阅读更多

C++并发编程 1:多线程基础

为什么使用并发 分离关注点 通过将相关的代码与无关的代码分离,可以使程序更容易理解和测试,从而减少出错的可能性。 用并发技术分离关注点的依据是设计理念,而不是以增加运算吞吐量为目的。 性能提升 任务并行:将一个单个任务分成几部分,且各自并行运...

阅读更多

miniconda安装及使用

miniconda安装 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash ./Miniconda3-latest-Linux-x86_64.sh miniconda替换国内源 conda conf...

阅读更多

lambda表达式

c++ lambda表达式用来创建一个闭包,闭包是一种可以捕获作用域内(闭包所在的代码块)的变量的一个匿名的函数对象。 labmda表达式结构: [捕获列表](参数列表) mutable 异常属性 -> 返回类型 { 函数体 } 其中: 捕获列表:指定lambda 表达式可以访问的外部变量,以及...

阅读更多

TCP协议:超时重传机制

超时重传的原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。 引入两个概念: RTT(Round Trip Time):往返时延,也就是数据包从发出去到收到对应ACK的时间。RTT是针对连接的,每一个连接都有各自独立的RTT...

阅读更多

TCP协议:连接管理

TCP建立连接 建立连接前,客户端和服务端都处于CLOSED状态。 先是服务端主动监听某个端口,处于LISTEN状态。 客户端主动发起第一次握手,之后处于SYN-SENT状态(SYN = 1, seq = x, ACK = 0, ack = 0)。 服务端收到SYN报文后,返回SYN+ACK...

阅读更多

TCP协议:TCP选项

简介 TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,典型的TCP头部选项结构如图所示: 每个TCP报文头可以同时包含多个选项。每个TCP选项通常由Kind(选项类型)、Length(选项长度)和Data(选项数据)组成。 0 ...

阅读更多

TCP协议:TCP Header总结

TCP简介 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP保证数据传输的可靠性,确保数据不丢失、不重复、按序到达。 TCP主要有以下特点: 面向连接: 在进行数据传输之前,需要先建立连接,确保双方可以可靠地进行通信。 可靠性: 采用多种机制来保证数据传输的可靠性,包括: ...

阅读更多