0

0

linux中多进程和多线程的区别是什么

青灯夜游

青灯夜游

发布时间:2022-01-11 17:32:03

|

6452人浏览过

|

来源于php中文网

原创

区别:1、多进程中数据共享复杂、同步简单,而多线程中数据共享简单、同步复杂;2、多进程占用内存多、切换复杂、速度慢、CPU利用率低,而多线程占用内存少、切换简单、CPU利用率高;3、多进程的编程简单、调试简单,而多线程的编程复杂、调试复杂。

linux中多进程和多线程的区别是什么

本教程操作环境:linux5.9.8系统、Dell G3电脑。

linux中多进程和多线程的区别

进程:运行中(加载到内存上)的程序。-->执行过程称之为进程。

线程:线程是轻量级的进程,是进程中的一条执行序列(一组有序指令),一个进程至少有一条线程。

main函数所代表的执行序列称之为主线程。通过线程库创建的线程称之为函数线程。

对比维度 多进程 多线程 总结
数据共享,同步

数据共享复杂,需要用IPC;

数据是分开的,同步简单

因为共享进程数据,共享数据简单,同时导致同步也复杂 各有优势
内存、CPU 占用内存多,切换复杂,速度慢,CPU利用率低 占用内存少,切换简单CPU利用率高 多线程优势
创建销毁、切换 创建销毁,切换复杂,速度慢 创建销毁,切换简单,速度很快 多线程优势
编程调试 编程简单,调试简单 编程复杂,调试复杂 多进程优势
可靠性 进程间不会互相影响 一个线程挂掉将导致整个进程挂掉 多进程优势
分布式 适用于多核、多机分布式;如果一台机器不够,拓展到多台机器比较简单 适用于多核分布式 多进程优势

多线程的优点:

  • 无需跨进程边界;

  • 程序逻辑和控制方式简单;

  • 所有线程可以直接共享内存和变量;

  • 线程方式消耗的总资源比进程少

多进程的优点

  • 每个进程相互独立,不影响主程序的稳定性,子进程崩溃没关系;

  • 通过增加CPU就可以容易扩充性能;

  • 可以尽量减少线程加锁/解锁的影响,极大提高性能;

多线程的缺点: 

  • 每条线程与主程序共用地址空间,大小受限;

  • 线程之间的同步和加锁比较麻烦;

  • 一个线程的崩溃可能影响到整个程序的稳定性;

  • 到达一定的线程数后,即使在增加CPU也无法提高性能;

多进程的缺点: 

  • 逻辑控制复杂,需要和主程序交互;

    DaGaoPeng(大高朋网团购程序)
    DaGaoPeng(大高朋网团购程序)

    大高朋团购系统是一套Groupon模式的开源团购程序,开发的一套网团购程序,系统采用ASP+ACCESS开发的团购程序,安装超简,功能超全面,在保留大高朋团购系统版权的前提下,允许所有用户免费使用。大高朋团购系统内置多种主流在线支付接口,所有网银用户均可无障碍支付;短信发送团购券和实物团购快递发货等。 二、为什么选择大高朋团购程序系统? 1.功能强大、细节完善 除了拥有主流团购网站功能,更特别支

    下载
  • 需要跨进程边界,如果有大数据传输,不适合;

  • 多进程调度开销比较大

应用情况如下:

1)需要频繁创建销毁的用线程

        这种原则最常见的就是Web服务器了,来一个连接建立一个线程,断了就销毁线程。如果用进程,创建销毁的代价是很难承受的。

2)需要进行大量计算的优先用线程

        所谓大量计算就是消耗很多CPU,切换频繁,这种情况下线程是最合适的。

        这种原则最常用的就是图像处理,算法处理。

3)强相关的处理用线程,弱相关的处理用进程

        什么叫强相关、弱相关?理论上很难定义,举一个例子加以解释。

        一般的Server需要完成如下任务:消息收发、消息处理。“消息收发”、“消息处理”就是弱相关的处理,而“消息处理”里面又分为“消息解码”、“业务处理”,这两个业务相对来说就强很多。因此“消息收发”、“消息处理”可以分进程设计,“消息解码”、“业务处理”可以分线程设计。

4)可能扩展到多机分布的用进程,多核分布的用线程(具体原因请看上表)

消耗资源:

        从内核的观点看,进程的目的就是担任分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一条执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

        线程,他们之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且线程间彼此切换所需要的时间也远远小于进程间切换所用的时间。

通讯方式:

        进程间传递数据只能通过通讯的方式,既费时又不方便。线程时间数据大部分共享,快捷方便,但是数据同步需要锁。

线程自身优势:

        提高应用程序相应;使用CPU系统更加有效;操作系统会保证当线程数目不大于CPU数目时候,不同的线程运行在不同的CPU上;改善程序结构,一个即长又复杂的进程可以考虑分为多个线程,成为几个独立或者半独立的部分,这样的程序会易于理解和修改。

相关推荐:《Linux视频教程

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

319

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

227

2023.10.07

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

467

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

84

2025.12.24

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

84

2025.12.24

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

386

2023.08.14

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1345

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

698

2023.06.29

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号