进程与线程的一些简单理解

一.进程与线程的定义

    进程是执行中的程序:程序是一段描述指令的文本,是一个静态的概念,把这段指令运行起来,每次运行就得到了一个进程,进程是动态的概念;操作系统会为进程分配资源。

    线程是进程中一段实际执行的代码:它也是一个动态的概念;操作系统调度和分派线程,为线程分配CPU时间片,使其执行。

二.进程与线程的特征

   线程有一个优先级、实际上正在处理的程序的位置记数器、一个存储其局部变量的栈。每个线程都有自己的栈,但程序代码和堆由一个进程的所有线程共享。由于该进程的所有线程都寻址相同的虚拟地址,这使得一个进程所有的线程之间通信非常快。

三.进程与线程的比较

    1.从操作系统角度而言

      进程是资源分配的基本单位:也就是说操作系统会为不同的进程分配不同的资源,如Window句柄、文件系统句柄、内核对象、虚拟内存等,我们可以说操作系统把Window句柄分配给某个进程,而不能说操作系统把Window句柄分配给某个线程。同时,一个进程内的所有线程共享分配给这个进程的所有资源,因而线程间的通讯非常迅速,而进程之间的通讯需要通过IPC。

      进程是调度和分派的基本单位:操作系统为线程分配CPU时间片,使多个线程可以同时运行在不同的CPU上,或多核CPU的不同内核上。

    2.从并发角度 

       进程之间可以并发执行:如你可以运行多个记事本程序,运行多个QQ。

       线程之间也可以并发执行:如你运行Word程序时,一个线程等待用户输入,一个线程进行拼写检查,一个线程将数据存入临时文件中...

       简单来说:二者都可以并发,只是并发的层次不一样。

    3.从系统开销角度

       创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等,操作系统所付出的开销显著大于创建或撤销线程时的开销;进程切换的开销也远大于线程切换的开销。

四.多线程带来的问题

    1.由于进程内的所有线程共享分配给这个进程的所有资源,如果并发的线程访问相同的数据,就会造成数据的不一致,必须实现同步机制。

    2.如何提高多线程程序CPU的利用率。

简而言之:进程是一个容器,线程在进程这个容器中执行,是实际执行的代码。一个进程至少拥有一个线程,而这个线程通常被称之为主线程(执行Main()方法的线程通常被称为主线程),主线程的入口点也是应用程序的起始点。线程除了必不可少的资源(程序计数器 一组寄存器和栈)之外,不拥有系统资源,所有进程内的线程共享分配给这个进程拥有的所有资源。

    参考:

    1.http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 进程与线程的一个简单解释

    2.http://www.cnblogs.com/hazir/archive/2011/05/09/2447287.html   进程与线程的区别

    3.http://jingyan.baidu.com/article/624e74598efcc834e9ba5a66.html  进程与线程的区别

 

posted @ 2015-04-10 00:47  gudi  阅读(761)  评论(0编辑  收藏  举报