进程和线程
- 进程: 是系统资源分配的基本单位,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址。一个进程所拥有数据和变值只属于它自己。
-线程是进程内相对独立的可执行单元,也被称为轻量进程。是操作系统进行任务调度的基本单元,他与父进程的其他线程共享该进程所拥有的全部代码空间和全局变量,但拥有独立的堆栈。
-区别:
1.系统开销:在创建或撤销进程时,由于系统要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销。
2.资源管理:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响。而线程只是一个进程中的不同执行路径,线程有自己的堆栈和全局变量,但是线程没有单独的地址空间,一个线程死掉等于整个进程死掉,所以多线程的程序要比多进程的程序健壮,但在进程切换时,耗费资源较大,效率要差一点。对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
同步和异步:
- 同步:在发生一个调用时,如果没有获取到相应的结果之前,该调用就不返回,但是一旦调用返回,就得到返回值了。
- 异步:调用请求发出后,这个调用直接返回,不会立刻得到结果,而是在调用请求发出后,被调用者通过状态通知调用者,或者通过回调函数处理这个调用。
阻塞和非阻塞
- 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。
- 阻塞调用:指的是在调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
- 非阻塞调用指在不能立即得到结果之前,该调用不会阻塞当前线程。
网友评论