首页 > 代码库 > 进程&线程
进程&线程
一个程序至少有一个进程,一个进程至少有一个线程.
进程拥有独立内存 线程共享内存(效率高)
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
线程只能归属于一个进程并且它只能访问该进程所拥有的资源,一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
做个比喻:
进程是个工厂车间,线程是车间内的工人。
车间拥有独立的空间,众多工人共享车间的空间与资源,相当于线程共享进程的内存空间。
但是一些空间是有限的比如测试有时只能同时容纳一个人,这个时候可以给厕所上锁。这就是互斥锁mutex!
当然也有一些空间可以容纳多人比如一个生产线,一条生产线可以容纳N个人,那么每上线一人机器被占用一个,下线时机器释放一个。一共有N台机器可用就是信号量的概念semaphore!
其实mutex是特殊的semaphore即N=1.
进程&线程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。