1. 基本概念:
进程是资源分配的最小单位,线程是程序执行的最小单位。(官方说法)
进程是系统正在运行中的一个应用程序,线程是进程之内的独立执行的一个单元执行流;
2.理解
(1) 一个进程包含多个线程,一个进程的内存空间是共享的,每个线程都可以使用这些共享内存;
(2) 一个线程使用某些共享内存时,其它线程必须等它结束,才能使用这一块内存;
为了防止多个线程,同时读写某一块内存区域,产生了“互斥锁"的概念;
(3)但某些内存区域,可以给固定数目的线程同时使用;
”信号量", 用来保证多个线程不会互相冲突。
就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。
后到的人发现钥匙架空了,就知道必须在门口排队等着了。
(4)
以多进程形式,允许多个任务同时运行;
以多线程形式,允许单个任务分成不同的部分运行;
提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
3.进程与线程各有什么特点
进程
优点:
每个进程相互独立,子程序崩溃也不影响主程序的稳定性;
缺点:
创建销毁比较麻烦,进程间数据的共享麻烦,并且消耗的资源比较多
线程
优点:
(1)各线程之间可以并发执行;
(2)各线程之间可以共享资源;
缺点:
(1)由于内存共享,所以导致了一个线程的崩溃会导致整个进程的所有线程崩溃;
(2)编程复杂以及调试困难,线程执行的随机性可能导致逻辑混乱,甚至发生死锁现象;
看到几篇不错的博文分享一下:
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html