线程的创建
线程通过构建std::thread对象而启动,std::thread的构造函数:
// 默认构造
std::thread t1;
// 使用任意可调用类型构造
std::thread t2(F&& f, Args&&... args);
// 使用另外一个线程移...
阅读更多
为什么使用并发
分离关注点
通过将相关的代码与无关的代码分离,可以使程序更容易理解和测试,从而减少出错的可能性。
用并发技术分离关注点的依据是设计理念,而不是以增加运算吞吐量为目的。
性能提升
任务并行:将一个单个任务分成几部分,且各自并行运...
阅读更多
miniconda安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ./Miniconda3-latest-Linux-x86_64.sh
miniconda替换国内源
conda conf...
阅读更多
c++ lambda表达式用来创建一个闭包,闭包是一种可以捕获作用域内(闭包所在的代码块)的变量的一个匿名的函数对象。
labmda表达式结构:
[捕获列表](参数列表) mutable 异常属性 -> 返回类型 { 函数体 }
其中:
捕获列表:指定lambda 表达式可以访问的外部变量,以及...
阅读更多
超时重传的原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。
引入两个概念:
RTT(Round Trip Time):往返时延,也就是数据包从发出去到收到对应ACK的时间。RTT是针对连接的,每一个连接都有各自独立的RTT...
阅读更多
TCP建立连接
建立连接前,客户端和服务端都处于CLOSED状态。
先是服务端主动监听某个端口,处于LISTEN状态。
客户端主动发起第一次握手,之后处于SYN-SENT状态(SYN = 1, seq = x, ACK = 0, ack = 0)。
服务端收到SYN报文后,返回SYN+ACK...
阅读更多
简介
TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,典型的TCP头部选项结构如图所示:
每个TCP报文头可以同时包含多个选项。每个TCP选项通常由Kind(选项类型)、Length(选项长度)和Data(选项数据)组成。
0 ...
阅读更多
TCP简介
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP保证数据传输的可靠性,确保数据不丢失、不重复、按序到达。
TCP主要有以下特点:
面向连接: 在进行数据传输之前,需要先建立连接,确保双方可以可靠地进行通信。
可靠性: 采用多种机制来保证数据传输的可靠性,包括:
...
阅读更多