![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 55
phil__naiping
抽象能力是程序员必须具备的。
展开
-
C++实现一个简单的线程池
一、设计线程池应该包括保存线程的容器,保存任务的容器。为了能保证避免线程对任务的竞态获取,需要对任务队列进行加锁。为了使得工作线程感知任务的到来,需要使用条件变量来唤醒工作线程。任务容器中的任务管理。任务的处理API。二、参数选择使用数组存放线程,链表存放任务。三、类设计线程池类template<typename T>class threadpool{public: threadpool(int thread_num,int max_requ原创 2022-05-17 20:26:18 · 677 阅读 · 5 评论 -
I/O模型
首先从I/O模型说起,主要分为两大类,同步I/O和异步I/O。1)同步是指内核向应用进程通知的是就绪事件,这些事件包括读、写等等。2)异步是指内核向应用进程通知的是完成事件。3)同步和异步的区别:同步是指前一件事不做完不做下一件事,等这个函数的结果才去做下一件事,类似程序的运行,串形执行。异步是指当前的事情没做完,我可以先去做其他事情。因此同步情况下,内核向应用进程一直在返回就绪事件,告诉应用进程我在这一直等着呢,知道数据来了,将数据从内核拷贝到用户空间。而异步就干其他事了,当数据准备好了,内核才原创 2021-10-24 19:05:39 · 91 阅读 · 0 评论 -
处理僵尸进程的一个方法结束-使用SIGCHLD信号
一、僵尸进程介绍在多进程开发的程序中,主进程要跟踪子进程的退出状态,当子进程运行结束时,内核不会立刻释放子进程进程表表项,而是等主进程读取子进程退出信息之后,才释放子进程的进程表表项。即父进程读取子进程退出信息之前,子进程结束之后,称该子进程为僵尸态。另外一种情况是当夫进程异常退出或者结束,os将子进程的PPID设置为1,即init进程,子进程的结束由init进程接管,这种情况下,父进程退出之后,子进程退出之前,该子进程称为僵尸态。二、如何避免僵尸态如果子进程处于僵尸态,内核资源将是极大的浪费原创 2021-08-28 19:25:50 · 394 阅读 · 0 评论 -
服务器程序框架
本篇博客是根据《Linux高性能服务器编程》的第八章高性能服务器程序框架来写的,大部分内容都是来自书上,其中结合自己学习的心得和体会。服务器主要可以分为I/O部分、逻辑处理、存储单元三部分。第一部分主要是I/O处理单元的四种I/O模式和两种高效的事件处理模式。分别是异步I/O模式、复用I/O模式、SIGIO模式、阻塞I/O模式四种I/O模式和Reactor、Proactor两种事件处理模式,以及使用同步I/O来模拟Proactor,提示:服务器程序通常要处理的三类事件:I/O事件、信号、定时事件,事件的.原创 2021-08-23 11:31:35 · 1544 阅读 · 0 评论 -
socket编程之带外数据的处理
带外数据和带内数据的解释:带外数据时用于迅速告诉对方本端发送的重要数据,因此带外数据比普通数据由更高的优先级。这里提到的普通数据就可以理解为带内数据。socket编程对带外数据的处理分为两部分:发送端和接收端。 一、发送端首先说明UDP是没有带外数据传输的,TCP也没有严格的带外数据传输,但是TCP利用头部的紧急指针标志和紧急指针两个字段给了应用程序一个紧急方式,TCP正是利用这种紧急方式来传递紧急数据的。 二、接收端TCP通信两端的读写是通过recv和send两个函数.原创 2021-08-19 16:10:06 · 701 阅读 · 0 评论 -
socket编程流程及函数详解
一、创建socketsocket就是一个可读、可写、可控制、可关闭的文件描述符(整型数字)// 函数原型int socket(int domain, int type, int protocol)//参数解释domain:指定系统使用的协议。可以是TCP/IP协议族,也可以是UNIX协议族。分别对应的值为 PF_INET(IPv4)/PF_INET6(IPv6) 和 PF_UNIX。type: 指明了服务的类型,有流服务和数据报服务,分别对应的参数为SOCK_S原创 2021-08-18 20:08:38 · 1889 阅读 · 0 评论 -
协议在电脑哪里?协议的存在形式?socket与TCP/IP协议族的关系?
疑惑:在学习计算机网络时出现在我们眼前的是大量的协议,这些协议可以理解为一组规则,规定双方的通信需要满足哪些要求、根据要求填写相应的信息。但是这些协议都存在在哪里?这是一直困惑我的?程序里?之前写过一些应用程序,也没有涉及到协议的部分,百思不得其解,直到遇到了socket。结论:先说结论,链路层、网络层、传输层中的这些协议都存放在内核里,内核是操作系统的核心,掌管着计算机的资源。socket就是套接字,应用程序可以通过socket使用这些协议,socket是实现系统调用的API。socket原创 2021-08-16 20:06:36 · 619 阅读 · 3 评论