![](https://img-blog.csdnimg.cn/22d5b06f72a44362888cbe47ca30629b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
基于linux下的高并发服务器开发
文章平均质量分 57
基于linux下的高并发服务器开发
呵呵哒( ̄▽ ̄)"
喜欢分享学习笔记,并不一定是正确的,阶段性的学习成果做一下记录,欢迎一起交流讨论,也希望有错误的地方可以向我提出,我会虚心接受并纠正
展开
-
epoll() 多路复用 和 两种工作模式
【注意】 ET模式需要配合循环+非阻塞。原创 2023-08-27 18:41:05 · 407 阅读 · 0 评论 -
UDP 广播
单播。原创 2023-08-28 22:15:05 · 559 阅读 · 0 评论 -
epoll 基于多线程的边沿非阻塞处理
epoll() 多路复用 和 两种工作模式_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。原创 2023-08-28 15:33:15 · 145 阅读 · 0 评论 -
IO多路转接(复用)多线程 select 并发
可以帮助我们去检测一系列的文件描述符的集合,并且检测这些文件描述符的状态,一类是监听的,监听的文件描述符集合;另一类是通信的,通信的文件描述符集合。在服务器端监听的文件描述符,它也就只有一个,lfd。另外一类就是通信的文件描述符,它有n个,在服务器端每次建立一个新连接,都会得到一个用于通信的文件描述符。意味着通过select能检测的文件描述符的个数:n+1,其中n是通信的文件描述符的个数,1是一个监听的文件描述符的个数。原创 2023-08-25 18:46:23 · 276 阅读 · 0 评论 -
UDP通信、本地套接字
【代码】UDP通信、本地套接字。原创 2023-08-27 15:08:14 · 257 阅读 · 0 评论 -
I/O多路复用 select 、poll
套接字通信并发如果我们服务器端想实现并发,有两种处理方式,第一种是通过多进程的方式来处理并发,第二种是通过多线程的方式来处理服务器端的并发。【问题】如果服务器端的程序只有一个线程,或者说只有一个进程,怎么能够实现并发呢?【回答】需要使用IO多路复用方式了。这种方式的解决方案一共有三种,第一种是select,第二种是poll,第三种是epoll。select可以跨平台,poll和epoll只能在Linux平台使用。从效率上考虑,epoll的底层是一棵红黑树。原创 2023-08-24 18:54:24 · 211 阅读 · 0 评论 -
了解Linux 的 mmap --- 笔记
② 使用mmap可以减少第二次拷贝,由于内核将文件映射到内存,之后用户进程就可以操作这些数据了,用户进程只需要修改内核中的内容,接着通过内核的内存管理器自动将这些数据刷新到磁盘当中。由于read和write是系统调用,需要先从用户态进入到内核态,再将磁盘中的数据拷贝到操作系统的缓冲区中,然后再将缓冲区中的数据拷贝到用户态中,这个过程进行了两次拷贝。③ mmap系统调用可以让进程之间通过映射到同一个普通文件实现共享内存,普通文件被映射到进程地址空间当中,之后进程可以向访问普通内存一样对文件进行一系列操作。原创 2023-08-05 14:36:57 · 488 阅读 · 0 评论 -
套接字通信(C/C++ 多线程)----基于线程池的并发服务器
基于linux下的高并发服务器开发(第四章)- 多线程实现并发服务器_呵呵哒( ̄▽ ̄)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/132026417?spm=1001.2014.3001.5501手写线程池 - C语言版 - 笔记总结_呵呵哒( ̄▽ ̄)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/131926834?spm=1001.201原创 2023-08-01 18:27:08 · 801 阅读 · 0 评论 -
基于多线程实现服务器并发
思路:首先accept是有一个线程的,另外只要这个accept成功的和一个客户端建立了连接,那么我们就需要创建一个对应的线程,用这个线程和客户端进行网络通信。这样的话,能够保证通信的线程和客户端是一个一一对应的关系,也就是说用于通信的线程一共是有n个,用于建立连接的线程只有一个。在线程里边一共分为两类,一类是主线程,一类是子线程,只要是建立了新连接,主线程创建一个子线程,让子线程和对应建立连接的那个客户端去通信就行了。如果这个数组元素被占用了,它的文件描述符的值应该是一个有效值。哪些资源是不共享的?原创 2023-08-01 17:49:40 · 794 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第四章)- 多线程实现并发服务器
基于linux下的高并发服务器开发(第四章)- 多进程实现并发服务器(回射服务器)_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。基于linux下的高并发服务器开发(第三章)-(3.1-3.2)线程概述和创建_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。基于linux下的高并发服务器开发(第三章)- 3.5 线程的分离_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。1.sockInfo结构。原创 2023-07-31 17:21:24 · 984 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第四章)- 多进程实现并发服务器(回射服务器)
很多网络编程函数诞生早于 IPv4 协议,那时候都使用的是 struct sockaddr 结构体,为了向前兼容,现在sockaddr 退化成了(void *)的作用,传递一个地址给函数,至于这个函数是 sockaddr_in 还是 sockaddr_in6,由地址族确定,然后函数内部再强制类型转化为所需的地址类型。因此,Linux 定义了下面这个新的通用的 socket 地址结构体,这个结构体不仅提供了足够大的空间用于存放地址值,而且是内存对齐的。包括从主机字节序到网络字节序的转换函数: htons、原创 2023-07-31 14:33:58 · 826 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 多线程开发
基于linux下的高并发服务器开发(第三章)-(3.1-3.2)线程概述和创建_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。基于linux下的高并发服务器开发(第三章)- 3.4 连接已终止的线程_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。基于linux下的高并发服务器开发(第三章)- 3.5 线程的分离_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。基于linux下的高并发服务器开发(第三章)- 3.3 终止线程_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。原创 2023-07-24 00:11:04 · 142 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.14 信号量
【代码】基于linux下的高并发服务器开发(第三章)- 3.14 信号量。原创 2023-07-24 00:07:09 · 109 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.13 条件变量
【代码】基于linux下的高并发服务器开发(第三章)- 3.13 条件变量。原创 2023-07-24 00:06:48 · 88 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.12 生产者和消费者模型
【代码】基于linux下的高并发服务器开发(第三章)- 3.12 生产者和消费者模型。原创 2023-07-24 00:05:52 · 121 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.11 读写锁
【代码】基于linux下的高并发服务器开发(第三章)- 3.11 读写锁。原创 2023-07-23 20:43:01 · 172 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.10 死锁
【代码】基于linux下的高并发服务器开发(第三章)- 3.10 死锁。原创 2023-07-23 20:07:39 · 190 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.9 互斥锁
【代码】基于linux下的高并发服务器开发(第三章)- 3.9 互斥锁。原创 2023-07-23 19:31:57 · 97 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.8 线程同步
【代码】基于linux下的高并发服务器开发(第三章)- 3.8 线程同步。原创 2023-07-23 17:57:38 · 178 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.7 线程属性
【代码】基于linux下的高并发服务器开发(第三章)- 3.7 线程属性。原创 2023-07-23 17:08:52 · 153 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.6 线程取消
【代码】基于linux下的高并发服务器开发(第三章)- 3.6 线程取消。原创 2023-07-23 16:28:15 · 146 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.5 线程的分离
【代码】基于linux下的高并发服务器开发(第三章)- 3.5 线程的分离。原创 2023-07-23 15:50:32 · 101 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.4 连接已终止的线程
【代码】基于linux下的高并发服务器开发(第三章)- 3.4 连接已终止的线程。原创 2023-07-23 15:08:46 · 93 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)- 3.3 终止线程
【代码】基于linux下的高并发服务器开发(第三章)- 3.3 终止线程。原创 2023-07-23 14:21:24 · 110 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第三章)-(3.1-3.2)线程概述和创建
得到的结论:在没有人为干预的情况下,虚拟地址空间的生命周期和主线程是一样的,与子线程无关。链接: https://subingwen.cn/linux/thread/原创 2023-07-23 12:44:53 · 156 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- Linux多进程开发
调用wait函数的进程会被挂起(阻塞),直到它的一个子进程退出或者收到一个不能被忽略的信号时才被唤醒(相当于继续往下执行)等待任意一个子进程结束,如果任意一个子进程结束了,次函数会回收子进程的 资源。并且立即回收子进程的资源。返回被回收的子进程的id。(管道的写端引用计数大于0)(管道的读端引用计数大于0)(假设都是阻塞I/O操作)(管道的读端引用计数为0)(管道写端引用计数为0)基于linux下的高并发服务器开发(第二章)- 2.7 进程退出、孤儿进程、僵尸进程_呵呵哒( ̄▽ ̄)"的博客-CSDN博客。原创 2023-07-22 00:49:54 · 124 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.30-2.31 守护进程
【代码】基于linux下的高并发服务器开发(第二章)- 2.30-2.31 守护进程。原创 2023-07-22 00:42:33 · 179 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.28-2.29 共享内存
【代码】基于linux下的高并发服务器开发(第二章)- 2.28-2.29 共享内存。原创 2023-07-21 22:58:04 · 88 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.27 SIGCHLD 信号
提前设置好阻塞信号集,阻塞SIGCHLD,因为有可能子进程很快结束,父进程还没有注册完信号捕捉。原创 2023-07-21 21:29:57 · 234 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.26 sigprocmask 函数使用
【代码】基于linux下的高并发服务器开发(第二章)- 2.26 sigprocmask 函数使用。原创 2023-07-21 20:36:42 · 71 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.25 sigprocmask 函数使用
【代码】基于linux下的高并发服务器开发(第二章)- 2.25 sigprocmask 函数使用。原创 2023-07-21 18:11:42 · 93 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.24 信号集及相关函数
如果阻塞了,这个信号就继续处于未决状态,直到阻塞解除,这个信号就被处理。- 这个标志位的值为1, 说明信号处于未决状态。原创 2023-07-21 17:27:06 · 93 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.23 signal 信号捕捉函数
失败,返回SIG_ERR,设置错误号。- SIG_IGN : 忽略信号。原创 2023-07-21 16:23:59 · 92 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.22 setitimer 定时器函数
【代码】基于linux下的高并发服务器开发(第二章)- 2.22 setitimer 定时器函数。原创 2023-07-21 15:39:41 · 90 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.21 alarm 函数
【代码】基于linux下的高并发服务器开发(第二章)- 2.20 alarm 函数。原创 2023-07-21 14:45:36 · 110 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.20 kill、raise、abort函数
首先:sudo service apport stop。原创 2023-07-21 14:08:44 · 586 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.19
SIGKILL 不能杀掉僵尸进程,这里杀死任何进程指的是正常的进程哈,不包括僵尸进程~~~原创 2023-07-20 23:24:40 · 85 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.18 内存映射(2)
2.如果open时O_RDONLY, mmap时prot参数指定PROT_READ | PROT_WRITE会怎样?5.可以open的时候O_CREAT一个新文件来创建映射区吗?6.mmap后关闭文件描述符,对mmap映射有没有影响?3.如果文件偏移量为1000会怎样?4.mmap什么情况下会调用失败?7.对ptr越界操作会怎样?原创 2023-07-20 22:06:40 · 480 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.17 内存映射(1)
MAP_SHARED : 映射区的数据会自动和磁盘文件进行同步,进程间通信,必须要设置这个选项。prot:PROT_READ open:只读/读写。- PROT_EXEC : 可执行的权限。要操作映射内存,必须要有读的权限。原创 2023-07-20 20:32:47 · 95 阅读 · 0 评论 -
基于linux下的高并发服务器开发(第二章)- 2.16 有名管道实现简单版聊天功能
【代码】基于linux下的高并发服务器开发(第二章)- 2.16 有名管道实现简单版聊天功能。原创 2023-07-20 14:39:33 · 96 阅读 · 0 评论