
Linux网络编程
文章平均质量分 93
dblinux
DBL && XLB
展开
-
IO多路复用
IO多路复用 Intro:多路IO也叫做多任务IO服务器。该类服务器的思想就是:不再由应用程序自己监视客户端连接,而是由内核替应用程序监视文件。好处就是server不会再阻塞。 1. 为什么需要IO多路复用? IO多路复用: 一种同步IO模型,实现一个线程可以监听多个文件句柄;一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作。没有文件句柄就绪时,会阻塞应用程序,交出CPU。多路是指网络连接,复用指的是同一个线程。 为什么需要IO多路复用? 在没有多路IO用机制时,有BIO、NIO两种实现方法,但是原创 2021-03-16 17:59:23 · 79 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型 1. 基本原理 在实现线程同步过程中,一个方法就是使用互斥锁 + 条件变量的方式。生产者消费者模型就是线程同步的典型例子。 其实现大概思路是这样的: 对于消费者来说,首先创建互斥锁并将其初始化;然后尝试去获取锁,因为只有拿到锁才可以去访问临界区的数据,但此时临界区不一定有数据啊,所以要先判断条件变量是否满足,如果不满足的话,那么消费者线程将阻塞在条件变量上等待条件变量满足(在这里即临界区有共享数据可以访问),等到条件变量满足了,那么消费者线程就会去访问数据(在这里埋一个坑,等到看代码时候说原创 2020-12-12 21:09:31 · 258 阅读 · 0 评论 -
一个简单的多进程服务器(包含fork()讲解)
一个简单的多进程服务器(包含fork()讲解) 1. 重要的 fork()函数 fork函数用于创建一个与当前进程映像一样的子进程,所创建的子进程将复制父进程的代码段、数据段、BSS段、堆、栈等所有用户空间信息,在内核中操作系统会重新为其申请一个子进程执行的位置。 fork系统调用会通过复制一个现有进程来创建一个全新的进程,新进程被存放在一个叫做任务队列的双向循环链表中,链表中的每一项都是类型为task_struct的进程控制块PCB的结构。 在不同的UNIX系统下,是无法确定fork后是原创 2020-11-04 19:35:39 · 459 阅读 · 0 评论 -
一个简单的Linux多线程服务器
Linux多线程 1. Linux多线程并发服务器模型 在Linux多线程服务端编程时,首先还是之前的三步走????(创建socket、bind绑定地址与端口号、listen设置最大监听上限)。重要的是线程回调函数和循环里面的逻辑。下面给出该步骤: 2. 线程知识回顾 线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。 线程创建????♀: #include <pthread.h> int pthread_create(pthread_t* thread, con原创 2020-11-01 18:37:12 · 365 阅读 · 2 评论 -
socket模型创建、基础网络编程API大汇总
socket模型创建、基础API详解 文章目录socket模型创建、基础API详解1. 基于TCP创建的socket模型流程图2. TCP通信流程分析3. 常用网络编程API1. socket地址API2. 常用socketAPI:o3. 网络信息API 1. 基于TCP创建的socket模型流程图 2. TCP通信流程分析 server client 1. socket() //创建socket 1. socket() //创建socket 2. bind() //绑定服务原创 2020-10-05 11:09:12 · 386 阅读 · 0 评论