线程与进程

来源:互联网 发布:有关程序员的个性签名 编辑:程序博客网 时间:2024/06/03 21:14

进程(Process):计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。

线程(Thread):随着技术发展,在执行一些细小任务时,本身无需分配单独资源时(多个任务共享同一组资源即可,比如所有子进程共享父进程的资源),进程的实现机制依然会繁琐的将资源分割,这样造成浪费,而且还消耗时间。后来就有了专门的多任务技术被创造出来——线程。线程的特点就是在不需要独立资源的情况下就可以运行。如此一来会极大节省资源开销,以及处理时间。

线程状态图:

差异:

1)进程是资源分配的基本单位,线程是调度的基本单位;

2)一个线程只属于一个进程,而一个进程中至少有一个线程;

3)进程在运行过程中拥有独立的内存单元,而同一个进程的多个线程共享内存,从而极大的提高了运行效率;

4)进程的个体间是完全独立的,任何一个进程的终止不会影响其他进程的运行;而在多线程环境中,线程之间是彼此依存的,若父进程终止,全部子程都会被迫中止(无资源可用),而任何一个子线程的终止一般不会影响其他线程,除非子进程执行力exit()系统调用。任何一个子线程执行exit(),全部线程同时死亡。

通信:

1)进程间通信方式:

A共享内存  B消息队列  C信号量  D有名管道  E无名管道  F信号  G文件  H socket

2)线程间通信方式:

A互斥量  B自旋锁  C条件变量  D读写锁  E线程信号

进程与线程间穿插通信方式,除信号外其他进程间通信方式都可采用。