Linux进程间通信总结

每个进程都有自己独立的虚拟地址空间,一个进程不能直接访问另一个进程的内存。但在很多应用场景中,多个进程需要协同工作,交换数据。IPC 机制就是操作系统提供的一套让不同进程能够互相通信、同步操作的机制。 进程间通信方式主要有: 匿名管道 命名管道 消息队列 共享内存 信号量 套接字 ...

阅读更多

C++14/17/20新特性总结

C++14 std::make_unique // 旧方式 (不安全) // std::unique_ptr<Foo> p(new Foo()); // C++14 方式 (安全、简洁) auto p = std::make_unique<Foo>(); ...

阅读更多

TCP协议中的定时器

重传超时定时器 建立连接、传输数据,在发送SYN或FIN时,会启动一个定时器, 如果在定时器超时前没有收到ACK,就会重新发送。 SYN发送的次数也有限制:cat /proc/sys/net/ipv4/tcp_syn_retries 传输数据过程中,当发送方发送一个...

阅读更多

TCP协议:滑动窗口机制

TCP使用滑动窗口机制来进行流量控制。 窗口 滑动窗口机制机制的核心在于发送方和接收方都维护一个可变窗口,这个窗口的大小代表了当前可以发送或接收的数据量。 发送窗口: 已发送并已确认的数据: 这部分数据已经安全到达,将被移出窗口。 已发送但未确认的数据: 这部分数据已经发出,但还没有收到接收方的确认...

阅读更多

TCP协议:拥塞控制

产生原因 网络中数据传输需要超过了网络能够处理的最大容量: 数据管道容量 网络设备缓冲区 产生控制拥塞后,数据包累积导致延迟,超过缓冲限制则大量丢失,影响传输效率和吞吐。 算法分类 拥塞控制大类 具体算法 特点 ...

阅读更多

IO多路复用模型

I/O多路复用实现单个线程同时监控多个socket的状态,当任何一个socket文件描述符就绪(可读、可写)时,内核会通知应用程序,从而避免了阻塞和轮询的低效。 Linux中提供了select、poll和epoll三种IO多路复用机制。 select select 函数原型: int select(int...

阅读更多

Linux IO模型

Linux中的五种I/O模型有: 阻塞I/O 非阻塞I/O I/O多路复用 信号驱动I/O 异步I/O 通常有同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式。 阻塞I/O 这是最简单也是最常用的模型。当应用程序发起一个 I/O 操作...

阅读更多

fcntl函数在socket编程中的使用

fcntl(file control) 用于对已打开的文件描述符进行各种操作。 /* * fd: 文件描述符 * cmd: 执行的操作 * arg: 类型和意义取决于cmd */ int fcntl(int fd, int cmd, ... /* arg */ ); 获取/设置socket文件描述符...

阅读更多