首页 > 编程语言 >TCP IP网络编程(14) 多线程服务端

TCP IP网络编程(14) 多线程服务端

时间:2023-02-05 21:56:02浏览次数:64  
标签:上下文 14 IP Linux 进程 多线程 CPU 服务端

多线程服务器端实现

  在《基于Linux的多进程服务器 》中介绍了Linux下多进程服务端实现的原理,在文章《Linux下epoll》中,介绍了epoll的实现原理。多进程服务端与基于select或者epoll实现的服务端相比具有一定的优势,但是也有一定的问题:创建(复制)进程会给操作系统带来沉重的负担,且每个进程具有独立的内存空间,进程间通讯的复杂度也会随之上升。可以总结为:

  • 创建进程的过程会带来一定的开销
  • 需要特殊的ICP技术,实现进程间数据交换

上述所说的操作系统开销主要是上下文切换(Context Switching),这是创建进程过程中主要的开销。

上下文切换(Context Switching):

  • 即使是单核的CPU,也可以运行多进程程序,这是因为操作系统将CPU时间分成多个微小的块以后,分配给了多个进程,为了实现“同时运行”多个进程,CPU就需要在每个进程分配的时间运行结束后,及时切换到其他的进程继续运行,运行进程的时候需要将相应的进程信息读入内存,如果运行完进程A后需要运行进程B,则操作系统需要将进程A相关的信息移出内存放到硬盘,并读入进程B相关的信息,这就是上下文切换。因为需要将内存数据移出放到硬盘,因此此过程需要较长时间,即使通过优化,也会存在一定的局限性。基于时间片轮转的任务调度,是非实时操作系统的特点,与此相对应的有实时操作系统,其特点任务的调度基于任务优先级,优先级高的任务可以抢占优先级低的任务的CPU资源

为了保证多进程的优点,且克服其缺点,引入了线程(Thread)的概念,这是为了将进程的劣势降到最低限度而设计的一种轻量级进程(再Linux下称为LWP Light-weight process),具备如下的优点:

  • 与进程相比,线程的创建合上下文切换速度更快
  • 线程间数据交换无需特殊技术

标签:上下文,14,IP,Linux,进程,多线程,CPU,服务端
From: https://www.cnblogs.com/ncepubye/p/17094012.html

相关文章

  • 多线程三大特性
     原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 在​​Java​​中,对基本数据类型的变量的读取和赋值操作是原子性操作,即......
  • Maven(一)如何用Eclipse创建一个Maven项目
    1.什么是MavenApacheMaven是一个项目管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven能够管理项目的构建、报告和文档。Maven工程结构和内容被......
  • 看一遍就懂,详解java多线程——volatile
    多线程一直以来都是面试必考点,而volatile、synchronized也是必问点,这里我试图用容易理解的方式来解释一下volatile。来看一下它的最大特点和作用:一使变量在多个线程间可见......
  • 任意组合、编排的多线程并发框架,支持任意阻塞、等待、串并行组合,回调、超时、默认值等
    并发场景可能存在的需求之——任意编排1多个执行单元的串行请求 2多个执行单元的并行请求 3阻塞等待,串行的后面跟多个并行 4阻塞等待,多个并行的执行完毕后才执行某个......
  • JavaScript学习笔记—DOM:操作class
    element.classList是一个对象,对象中提供了对当前元素的类的各种操作方法element.classList.add()向元素中添加一个或多个classelement.classList.remove()移除元素中......
  • 【JavaScript】3_深挖数据类型
    4、其他的数据类型布尔值(Boolean)-布尔值主要用来进行逻辑判断-布尔值只有两个true和false-使用typeof检查......
  • iphone切换store账户
    概述iphone的store是app根据国际限制上架,想下载美区、港区的app必须切换store账户才可以解决01、淘宝,哈哈02、打开apple/store打开appstore,然后就在第一个界面有你......
  • Disconnect Path in a Binary Matrix by at Most One Flip
    DisconnectPathinaBinaryMatrixbyatMostOneFlipYouaregivena0-indexed $m\timesn$binary matrix grid .Youcanmovefromacell (row,col) to......
  • 多线程之CompletableFuture
    目录1.Future回顾代码示例:2.CompletableFuture实现上面示例CompletableFuture创建方式常用的4种创建方式:CompletableFuture源码中有四个静态方法用来执行异步任务区别结果......
  • Java多线程并发06—CAS、AQS
    CAS(CompareAndSwap/Set)概念CAS函数,是比较并交换函数,它是原子操作函数。原理CAS是基于乐观锁的原理进行操作的。它总是认为自己可以成功完成操作。当多个线程同时使用CAS......