摘要: 1. 基本概念及相关术语 1.1 基本概念 虚拟内存使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。即将不完整,不连续的物理内存映射为连续的虚拟内存。虚拟内存主要有以下三个作用: 阅读全文
posted @ 2020-05-18 12:17 晨枫1 阅读(1336) 评论(0) 推荐(0) 编辑
摘要: 背景:在上一篇博文https://www.cnblogs.com/yuanwebpage/p/12638001.html中结尾时,提到QT下所有IO类都不允许跨线程调用,这极大增加了编程难度。本文接着上一篇,主要讨论当套接字与UI线程不在同一线程时,如何使TCP的收发实时。 1. 能否跨线程调用TC 阅读全文
posted @ 2020-04-08 21:31 晨枫1 阅读(7165) 评论(0) 推荐(1) 编辑
摘要: (注:非常感谢博文https://www.cnblogs.com/judes/p/11249300.html给我带来的启发,因为在QML下的多线程解决方案太少了,而且很多都只有方案,没有能实现的代码,这也是我写作这篇文章的原因。本文部分参考以上博文) 在编写QML应用时,时常会遇到这样的问题:后台需 阅读全文
posted @ 2020-04-05 17:10 晨枫1 阅读(6764) 评论(1) 推荐(4) 编辑
摘要: 本节记录Windows下与epoll类似的机制IOCP(input outpout completion port)。对于单台电脑的多TCP连接请求,IOCP和epoll是比较好的选择。因为IOCP会用到重叠IO的一些函数,因此先记录重叠IO。 1. 重叠IO 1.1 关键函数 由于IOCP的使用会 阅读全文
posted @ 2020-03-26 18:48 晨枫1 阅读(422) 评论(0) 推荐(0) 编辑
摘要: PS:在开始Windows下异步IO之前,需要了解一些重要概念。 (1)内核对象,句柄和线程ID:操作系统为了记录并管理某一类资源,如进程,线程,文件,会创建记录相关资源信息的内部数据结构,称为内核对象(如管理进程的进程控制块PCB);句柄是Windows下为了管理内核对象提供的可访问内核对象的一种 阅读全文
posted @ 2020-03-26 10:18 晨枫1 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 在学习TCP超时设置的时候,发现网上没有完整的超时介绍,遂总结一下。TCP超时总共分为3类:connectTimeout, writeTimeout, readTimeout(连接超时,读超时,写超时)。下面分别介绍如何设置这三种超时。 1. 连接超时 在TCP调用connect函数时,TCP的建立 阅读全文
posted @ 2020-03-08 17:54 晨枫1 阅读(8095) 评论(0) 推荐(0) 编辑
摘要: 注:关于进程间通信机制也可以参考https://www.jianshu.com/p/206a95ed784f。总结很全面,本文更侧重理解和细节问题。 多个进程之间通信,实际上是内核提供一定缓冲区,进程通过该缓冲区交换数据。内核提供的这种机制即进程通信机制(Interprocess Communica 阅读全文
posted @ 2020-03-05 14:12 晨枫1 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 上一节实现了基于epoll的IO复用并发程序控制,本节记录基于多线程的并发程序设计。 1. 线程和进程 进程是具有独立功能的程序关于某个数据集合的一次运行活动,是系统资源管理资源分配的基本单位,而线程是进程中代码的一个执行流,是系统调度的基本单位(虽然这句话很常见,但是就用户级线程和内核级线程而言似 阅读全文
posted @ 2020-02-26 16:42 晨枫1 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 上一节(https://www.cnblogs.com/yuanwebpage/p/12362876.html)记录了多路IO复用的第一种方式select函数,以及其相应的缺点。本节记录多路IO复用的第二种方式epoll(在windows系统下叫IOCP)。 1. epoll相关函数 epoll函数 阅读全文
posted @ 2020-02-26 12:35 晨枫1 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 上一节https://www.cnblogs.com/yuanwebpage/p/12361275.html记录了多进程并发程序,除了已经描述的缺点,考虑服务器端一直在调用accept函数结束客户端请求,所以没办法进行其他响应,如响应用户的输入/输出。而多路IO复用除了能同时执行一种IO的多个操作, 阅读全文
posted @ 2020-02-25 17:45 晨枫1 阅读(259) 评论(0) 推荐(0) 编辑