运行的程序是进程。开启多进程,就是把程序复制一次到内存中。对吧?
线程就是,程序里选一部分复制,对吧?
还是全局变量不动,只把别的程序复制呢?
好像不是这样回事儿哦,多进程本质是操作系统以多个任务的方式运行,不同进程的运行是数据信息也是不一样的,没有复制这一说哦;共有的是操作系统的资源。
多线程,运行内容是由线程定义的任务决定的,公共用的是同一个进程的资源。
理论上,你打开2个相同的进程,需要加载2份相同的代码到内存,两个程序地址隔绝。彼此拥有完整的代码、堆内存、常量、堆栈、进程控制块等等。
线程的话,相同进程里多个线程只有堆栈是独立的,其他代码、堆内存、常量(所谓的全局变量)都是共享的。