线程与进程的关系

概述

进程是资源分配的基本单位,进程由线程组成。

线程是系统执行调度的基本单位,线程隶属于进程。

为何引入线程

1、进程在同一时间只能干一件事,比如我们在上课的时候,往往要耳朵听课,手记笔记,脑子思考,如果套用进程的机制,那么我们听课的时候也不能记录笔记,更不能思考。

2、当进程某个操作阻塞时,整个进程就会挂起,也就是说当老师讲课时需要思考的时候,我们也还只能听课,不能思考也不能记录笔记

线程与进程的区别

1、进程是资源分配的基本单位,线程是系统执行调度的基本单位

2、每个进程都有独立的内存地址空间,互不影响,每个线程都共享同一进程的内存空间

3、当一个进程崩溃时,由于地址空间是独立的,所以不会影响其他进程,当一条线程出现问题时,整个进程就会有问题

4、线程可以看做是进程内部的执行路径,当路径只有一条的时候,就称为单线程,多条则为多线程

5、创建线程要比创建进程快,在创建和回收进程的时候,系统都要为之分配和回收资源,导致系统的开销明显大于线程的开销

进程间通信

管道及有名管道:

管道用于具有亲缘关系的父子进程之间的通信;有名管道除了具有管道的功能,还允许无缘进程之间的通信

信号:

在软件层次上对中断机制的一种模拟,用于通知进程有某件事要发生

消息队列:

消息的链接表,具有写权限的进程可以向消息队列中写入消息,具有读权限的进程可以从消息队列中读取消息。

共享内存:

多个进程访问同一块内存区域,不同进程之间可以看到对方对数据的更新

Socket:

网络中不同机器之间的网络通信

线程间通信

信号量(允许多个线程在同一时间访问统一资源):

我们可以看个例子:假设车是线程,停车场是内存空间。有一个停车场内只能容纳5个车,所以每进去一辆车就在门卫处拿一个牌号,因为只有5个牌号,所以当停车场停够5辆车的时候,其余车就不能进入,只能在外面排队等待。只有当停车场内一个车出来的时候,把车牌归还给门卫,此时在外面排队的进去一个车。这样做保证了多个线程之间不冲突。

互斥:

把停车场的例子换成停车场内只能容纳一个车。我停时,你就不能停。

临界区:

任何时刻只允许一个线程对共享资源进行操作,其他线程要访问共享资源都会被挂起,当临界区中的线程离开时,其他线程可以抢占

线程间通信的目的主要是用于线程同步,所以没有像进程中交换数据的通信机制

多线程同步和互斥的区别

同步就是线程之间的一种制约关系,一个线程的执行依赖于另一个线程的消息,一个线程只有得到另一个线程的消息时可以被唤醒,否则应该等待。

互斥是当一个线程访问共享资源的时候,任何时刻只允许一个线程去使用,其他要使用该资源的线程必须等待,只要占用该资源的线程释放该资源。

因此互斥可以看做一种特殊的同步。

举个例子:

一个全局变量,只要当主线程修改了这个变量后,下一个才可以访问,此时就需要同步两个线程;

一个线程在访问全局变量的时候另一个线程不能访问这个变量,这就是互斥。

线程安全

多线程的程序是可预期的,和单线程运行结果一样,那么就说明是安全的

参考

进程与线程的区别?

进程与线程的一个简单解释

版权声明:本文为博主原创文章,转载请注明出处。

时间: 2024-11-09 00:46:41

线程与进程的关系的相关文章

三层架构介绍及线程与进程的关系

1.初识三层架构(其实就是吧同种类的全部放到一起) 1).用户交互 2).逻辑处理 3).数据存储 2.多线程与多进程 进程:是操作系统自己派生出来的. 线程:是由进程派生出来的. 1)一个程序至少有一个进程,一个进程至少有一个线程. 2) 线程的划分尺度小于进程,使得多线程程序的并发性高. 3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率. 4) 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口.顺序执行序列和程序的出口.

线程和进程的关系

在多个CPU的主机上,线程是可以同时执行的. 多线程对于多进程的优点: 1.在多进程的情况下,每个进程都有自己的地址空间.而在多线程情况下,同一进程内的线程共享进程的地址空间, 因此,创建一个新的进程要耗费时间来为其分配系统资源,而创建一个新的线程花费的时间要少得多. 2.在系统调度方面,由于进程拥有独立的地址空间,而线程共享地址空间.线程的切换速度要远远快过进程间的切换速度. 3.在通信机制方面,进程间的数据空间相互独立,彼此通信要以专门的方式进行通信,通信时必须要经过操作系统.同一进程内的线

delphi的多线程实现和线程与进程的关系说明

做了个多线程的测试Demo unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2; type TForm1 = class(TForm) lbl1: TLabel; btn1: TButton; btn2: TButton; btn3: TButton; procedure btn1Click(Se

Linux 线程与进程,以及通信

http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-id-3025213.html 1.首先要明确进程和线程的含义: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位.与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体.进程是程序在某个数据集上的执行,

线程、进程、多线程、多进程

http://blog.csdn.net/lishenglong666/article/details/8557215 线程进程的联系和区别 定义: 进程是程序在计算机上的一次执行活动,是系统进行资源分配和调度的一个独立单位:  线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能独立运行的基本单位:线程自己基本上不拥有系统资源,只用有点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程: 线程与进程的关系: 1)     一个线程只能属于

线程 ,进程和协程

一.线程(目的提高执行效率) 计算机中执行任务的最小单元 优点:共享内存,IO操作的时候,创造并发操作 缺点:抢占资源 二.进程(提高执行效率) 进程就是一个程序在一个数据集上的一次动态执行过程 优点:同时利用多个CPU,能够同时进行多个操作 缺点:消耗资源(重新开辟内存空间) 三.线程和进程的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与 属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身

线程与进程极其区别

1.进程和线程 1.1 概述: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于执

Python_oldboy_自动化运维之路_线程,进程,协程(十一)

本节内容: 线程 进程 协程 IO多路复用 自定义异步非阻塞的框架 线程和进程的介绍: 举个例子,拿甄嬛传举列线程和进程的关系: 总结:1.工作最小单元是线程,进程说白了就是提供资源的 2.一个应用程序至少有一个进程,一个进程里至少有一个线程 3.应用场景:io密集型适合用多线程,计算密集型(cpu)适合用多进程 4.GIL:全局解释器锁,作用:保证同一个进程中只能有一个线程同时被调用 5.python的一个诟病:前提是被cpu调度,因为有GIL,一个应用只有一个进程,纵容有多个线程,也体现不出

线程和进程的区别(详细)

1.线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源.一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行. 好处 :(1)易于调度. (2)提高并发性.通过线程可方便有效地实现并发性.进程可创建多个线程来执行同一程序的不同部分. (3)开销少.创建线程比创建进程要快,所需开销很少.. (4)利于充分发挥多处