程序员面试金典 笔记

时间:2020-12-11 00:41:57

线程和进程有何区别?

进程和线程彼此有关联,但两者有着根本上的不同。

进程可以看做是程序执行时的实例,是一个分配了系统资源(比如CPU时间和内存)的独立实体。每个进程都在各自独立的地址空间里执行,一个进程无法访问另一个进程的变量和数据结构。如果一个进程想要访问其他进程的资源,就必须使用进程间通信机制,包括管道,文件,,套接字(socket)及其他形式。

线程存在于进程中,共享进程的资源(包括它的堆空间)。同一进程里的多个线程共享同一个堆空间。这跟进程大不相同,一个进程不能直接访问另一个进程的内存。不过,每个线程仍然会有自己的寄存器和栈,而其他线程可以读写堆内存。

线程是进程的某条执行路径。当某个线程修改进程资源时,其他兄弟线程就会立即看到由此产生的变化。