线程和进程的区别?线程共享的资源是什么?

  1. ⼀个程序⾄少有⼀个进程,⼀个进程⾄少有⼀个线程

  2. 线程的划分尺度⼩于进程,使得多线程程序的并发性⾼

  3. 进程在执⾏过程中拥有独⽴的内存单元,⽽多个线程共享内存,从⽽极⼤地提⾼了程序的运⾏效率

  4. 每个独⽴的线程有⼀个程序运⾏的⼊⼝、顺序执⾏序列和程序的出⼝。但是线程不能够独 ⽴执⾏,必须依存在应⽤程序中,由应⽤程序提供多个线程执⾏控制

  5. 多线程的意义在于⼀个应⽤程序中,有多个执⾏部分可以同时执⾏。但操作系统并没有将 多个线程看做多个独⽴的应⽤,来实现进程的调度和管理以及资源分配

  6. ⼀个进程中的所有线程共享该进程的地址空间,但它们有各⾃独⽴的(/私有的)栈(stack), Windows 线程的缺省堆栈⼤⼩为1M。堆(heap)的分配与栈有所不同,⼀般是⼀个进 程有⼀个C运⾏时堆,这个堆为本进程中所有线程共享, windows 进程还有所谓进程默认堆, ⽤户也可以创建⾃⼰的堆。

线程私有:线程栈,寄存器,程序寄存器 共享:堆,地址空间,全局变量,静态变量 进程私有:地址空间,堆,全局变量,栈,寄存器 共享:代码段,公共数据,进程⽬录,进程ID

Last updated