进程与线程&同步与异步

简介:

进程是程序的一次执行,是系统资源(CPU时间、内存)分配的基本单位。 
线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,一个进程可以有多个线程,多个线程可以并发执行,线程与同属一个进程的其他线程共享进程所拥有的全部资源。 
与进程比较 
线程的优点: 
启动一个线程比启动一个进程节省资源,同一进程下的线程共享数据空间,方便通信。 
线程的缺点: 
一个线程要是死掉了,整个进程就死掉了,一个进程死掉了不会影响其他进程,所以多进程比多线程健壮。 
不与进程比较 
线程的优点: 
1、提高应用程序响应。当一个操作耗时很长时,整个系统都会等待这个操作,此时不会响应键盘、鼠标等操作,而使用多线程技术,将耗时长的操作置于一个新的线程,可以避免这种情况。 
2、使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。 
3、改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立的运行部分,这样的程序会利于理解和修改。

注:CPU时间即反映CPU全速工作时完成该进程所花费的时间。

关于同步与异步 
同步就是在发出一个“调用时”,在没有得到结果之前,该“调用”就不返回,如果结果返回时间很长,就出现阻塞状态。换句话说,就是由“调用者”主动等待这个“调用”结果。 
异步则是在“调用发出后”,这个调用就直接返回了,没有返回结果,“被调用者”来通知“调用者”返回的结果。 
举个通俗的例子: 
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下”,然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。 
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。 
而阻塞与非阻塞阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态. 
1. 阻塞非阻塞表示下面 买书过程中 可能出现的状态,是从 我 这个单角色角度来看待这个买书这个问题。 
2. 同步异步表示一种协作方式,是从全局更高的角度 “进程之间 合作的方式” 来看待买书这个业务。两个进程之间如果商量采用异步方式处理买书这一业务,就不存在阻塞这种状态。

异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。



本文转自 00_yatou 51CTO博客,原文链接:http://blog.51cto.com/ql0722/1614755,如需转载请自行联系原作者

相关文章
|
数据采集 存储 JSON
Python爬取知乎评论:多线程与异步爬虫的性能优化
Python爬取知乎评论:多线程与异步爬虫的性能优化
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
508 0
|
10月前
|
Java 测试技术 API
【JUC】(1)带你重新认识进程与线程!!让你深层次了解线程运行的睡眠与打断!!
JUC是什么?你可以说它就是研究Java方面的并发过程。本篇是JUC专栏的第一章!带你了解并行与并发、线程与程序、线程的启动与休眠、打断和等待!全是干货!快快快!
1248 2
|
10月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
455 1
|
10月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
424 1
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
513 67
|
数据采集 监控 调度
干货分享“用 多线程 爬取数据”:单线程 + 协程的效率反超 3 倍,这才是 Python 异步的正确打开方式
在 Python 爬虫中,多线程因 GIL 和切换开销效率低下,而协程通过用户态调度实现高并发,大幅提升爬取效率。本文详解协程原理、实战对比多线程性能,并提供最佳实践,助你掌握异步爬虫核心技术。
|
调度 开发工具 Android开发
【HarmonyOS Next】鸿蒙应用进程和线程详解
进程的定义: 进程是系统进行资源分配的基本单位,是操作系统结构的基础。 在鸿蒙系统中,一个应用下会有三类进程:
498 0
|
SQL 监控 网络协议
YashanDB进程线程体系
YashanDB进程线程体系
|
数据采集 Java 数据处理
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
864 0

热门文章

最新文章