线程与进程的区别

线程是指进程内的一个执行单元,也是进程内的可调度实体. 
与进程的区别: 
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间; 
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源 
(3)线程是处理器调度的基本单位,但进程不是. 
4)二者均可并发执行.

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 
线程的划分尺度小于进程,使得多线程程序的并发性高。 
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

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

Python 的线程是系统原生线程,完全交由操作系统管理

线程实例一:

#!/usr/bin/env python
# coding:utf-8
import threading
import time
def run(num):
    print "threading ......",num
    data -= 1
    time.sleep(0.1)

for i in range(500):
    # target 要执行的方法,
    # args 一定要加个,要不就是元组了
    # 起500个线程
    t = threading.Thread(target=run,args=(i,))
    # 每一个i都会执行一个run函数
    t.start()

线程实例二:加锁

#!/usr/bin/env python
# coding:utf-8
import threading
import time
def run(num):
    # 加锁
    lock.acquire()
    global data
    print "threading ......",num
    data -= 1
    # 解锁
    lock.release()
    time.sleep(0.1)

# 设置锁
lock = threading.lock()
data = 500
for i in range(500):
    # target 要执行的方法,
    # args 一定要加个,要不就是元组了
    # 起500个线程
    t = threading.Thread(target=run,args=(i,))
    # 每一个i都会执行一个run函数
    t.start()
print "-----data:",data

线程实例三:多级锁

#_*_coding:utf-8_*_
__author__ = ‘jieli‘
import threading,time

def run(n):
    semaphore.acquire()
    time.sleep(1)
    print "run the thread: %s\n" %n
    semaphore.release()

if __name__ == ‘__main__‘:

    num= 0
    semaphore  = threading.BoundedSemaphore(3)
    for i in range(20):
        t = threading.Thread(target=run,args=(i,))
        t.start()

while threading.active_count() != 1:
    pass #print threading.active_count()
else:
    print ‘----all threads done---‘
    print num

时间: 2024-10-12 17:29:37

线程与进程的区别的相关文章

iOS线程和进程的区别和联系

线程和进程的区别主要在于它们是不同的操作系统资源管理方式.进程有独立的地址空间,一个进程崩溃后,在保护模式的影响下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径.线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等同于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些.但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程. 线程是CPU独立运行和独立调度的基本单位(可以理解为一个进程中执行的代码

iOS_线程和进程的区别与联系

呼~明天有一家面试,不知道为啥,有点小紧张... 首先是线程和进程的联系: 线程和进程都是由操作系统所负责的程序运行的基本单元,系统利用该基本单元实现对应用的并发性. 接下来就是线程和进程的区别: 线程和进程最大的区别就是它们是操作系统的两种资源管理方式,进程有独立的地址空间,一个进程奔溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同的执行路线,线程有自己的堆栈和局部变量,但是线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但

线程与进程的区别以及对多线程并发的理解

转自: http://blog.sina.com.cn/s/blog_12f5264ff0102v8eq.html http://blog.csdn.net/suxinpingtao51/article/details/8113509 http://blog.csdn.net/cqkxboy168/article/details/9026205/ 一.线程与进程的区别 先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程.

线程与进程的区别以及联系

在操作系统中,线程与进程是非常重要的概念,深刻地理解它们很有必要.那么,什么是线程,什么是进程呢?它们之间又有什么区别什么联系呢? 进程是具有独立功能的程序关于某个数据集合的一次运行活动,可以申请和运行资源,是系统资源分配和调度的最小单位.一个程序可以对应一个或多个进程,一个进程可以对应一个程序或一段程序.进程由程序(描述进程要完成的功能).数据集合(程序在执行时所需要的数据和工作区).PCB控制块(包含进程的描述信息和控制信息,进程存在的唯一标志)组成,在进程创建时,创建PCB,进程结束时,撤

操作系统(10 线程和进程的区别 --非法操作)

1.并发执行:多进程和多线程. 2.  apache 和 iis 对比(多进程和多线程的之间区别) apache 是多进程实现的,iis是多线程实现的. 区别: 1>效率上:线程效率比进程效率高. 2>稳定性:线程和进程比,线程不稳定,一个线程出现问题,多个线程一起出现问题.而进程是独立的,有自己独立的空间. 3>安全性:进程是隔离的,单独的.线程之间可以互相访问 3.平时会遇到一些非法操作,非法操作的原理是? 因为操作系统分为两个态,用户只能存在于用户态,不能越界到内核态.只要用户越界

线程与进程极其区别

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

C语言中线程和进程的区别

线程是指进程内的一个执行单元也是进程内的可调度的实体,与进程的区别 1) 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 2) 并发性:不仅进程之间可以并发执行,同一个进程之间的多个线程可以并发执行 3) 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但是可以访问隶属于进程的资源 4)系统开销: 在创建或撤销进程时,由于系统都要之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销

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

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

Python线程与进程的区别

进程的基本概念 概念进程就是一个程序在一个数据集上的一次动态执行过程. 进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要使用的资源:进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志. 线程的基本概念 概念线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资