进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。
http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html
最近也在看线程与进程的资料,正好看到阮一峰老师的这一篇文章,生动地解释线程与进程的区别!!http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
关系:
区别:
很经典的一道题,大家积极讨论下
性能测试中负载生成方式好像有进程和线程的区别。
基于这个来说的话,使用进程模拟负载的资源开销相对较大,每个虚拟用户会使用一个单独的 mmdrv.exe 来完成负载的实现,这样做用户之间会相互独立,不互相影响。使用线程方式,那么所有用户都是在一个 mmdrv.exe 上模拟,但使用线程也会存在不稳定的情况,导致用户脚本执行错误。------来自某概念
请楼主先给出你的答案。
—— 来自 TesterHome 官方 安卓客户端
进程是一个程序的执行,线程是在进程中独立的执行序列. 一个进程可以包含很多线程
看到这个帖子,想问一个问题,jmeter 是线程的,locust 是 gevent(这个 gevent 我也不明白是如何实现的)。这两个。谁做出来的压力测试结果,更加符合真实情况呢?最近在这两个之间纠结
进程是进程,线程是线程
回答不出来的人,肯定没做过开发
我的理解是 进程是一个个独立的 exe ,线程是 exe 里独立的一条条公路
总能看到你 哈哈
进程和线程就像一碗面条,进程就像那个碗,多进程就是多个碗。线程就像碗里的面。emmmmm,有点儿饿了
关系:
区别:
说完线程 再来说说协程
硬件差异:
cpu 是以进程处理的,多核是在处理多个进程或者线程。进程在资源管理器里是 1 个独立的内存单位,但线程是共享内存的。(同可以查资源管理器等工具)
执行过程:
线程不能单独执行,需要依赖于进程,应用进程可以包含多个线程(同可以查资源管理器等工具)
测试中比如压力测试 和测试需求挂钩 一些容器本身就是支持多线程的,起码游戏这边所有压测基本都是多线程的。
如果是多线程的并发,进程是 1 个 master 对象 1 个进程支持多少个线程(叫法上可以不一样),总量就是线程数 * 进程数量。并发时就是多个线程进行,所有线程等待测试结果返回。进程只是反馈线程的存在。
关于多进程的比如一些支持多开的服务起多个进程,比如 flash 的需要访问 834 沙箱,单独有多个进程处理,发起对应协议的请求,验证进程的状态。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。
http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html
其实在不同的操作系统下,进程和线程的含义是不同的,在 Win 上就像大家所理解的那样,当然更深的层次要扯到时间片轮转调度机制什么的,而在 Linux 内核上是不区分进程和线程的,有的只是 Task
进程有点像操场,带了很多跑步用的设置,而线程像赛道,可以多个并行跑,并一起公用进程里面的资源。共用不好就会死锁。
最近也在看线程与进程的资料,正好看到阮一峰老师的这一篇文章,生动地解释线程与进程的区别!!http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
好比弹钢琴 十个手指头是线程 两只手臂是进程
记得大学时候老师讲过:进程是 CPU 进行工作的基本单位,而线程则是进程组成的基本单元。
也就是说,一个进程中至少包含一个线程,而同一时间段一个 CPU 只能对一个进程进行操作?