线程的理解

  说到线程就不得说进程。

  • 进程

  进程对应一个程序,每个进程对应一定的内存地址空间,并且只能使用它自己的内存空间,各个进程间互不干扰。并且进程保存了程序每个时刻的运行状态,这样就为进程切换提供了可能。当进程暂时时,它会保存当前进程的状态(比如进程标识、进程的使用的资源等),在下一次重新切换回来时,便根据之前保存的状态进行恢复,然后继续执行。这就是并发,能够让操作系统从宏观上看起来同一个时间段有多个任务在执行。换句话说,进程让操作系统的并发成为了可能。

  注意,虽然并发从宏观上看有多个任务在执行,但是事实上,任一个具体的时刻,只有一个任务在占用CPU资源(当然是对于单核CPU来说的)。

  • 线程

  线程,让一个线程去执行进程一个子任务,这样一个进程就包括了多个线程,每个线程负责一个独立的子任务,让用户感觉是同时在做多件事情的,满足了用户对实时性的要求。换句话说,进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能。

  注意,一个进程虽然包括多个线程,但是这些线程是共同享有进程占有的资源和地址空间的。进程是操作系统进行资源分配的基本单位,而线程是操作系统进行调度的基本单位。

  由于多个线程是共同占有所属进程的资源和地址空间的,那么就会存在多个线程要同时访问某个资源的同步问题,这就是线程同步问题。

  • 线程与进程的区别归纳:

  a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

  b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

  c.调度和切换:线程上下文切换比进程上下文切换要快得多。

  d.在多线程OS中,进程不是一个可执行的实体。

posted @ 2016-01-18 21:25  ngulc  阅读(709)  评论(0编辑  收藏  举报