进程与线程&同步与异步

简介:

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

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

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

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

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


00_yatou

相关文章
|
8月前
|
监控
写一个线程来监控各线程是否发生阻塞
写一个线程来监控各线程是否发生阻塞
74 0
|
8月前
线程间的同步的方式有哪些
线程间的同步的方式有哪些
阻塞式/非阻塞式与同步/异步的区别
阻塞式/非阻塞式与同步/异步的区别
96 0
|
Linux 数据安全/隐私保护
【Linux线程同步专题】五、进程间同步
【Linux线程同步专题】五、进程间同步
130 0
【Linux线程同步专题】五、进程间同步
理解阻塞、非阻塞与同步、异步的区别
理解阻塞、非阻塞与同步、异步的区别
理解阻塞、非阻塞与同步、异步的区别
|
调度 C++
进程、线程、并发、并行、同步、异步、阻塞、非阻塞
乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。
阻塞/阻塞/同步/异步
咱就说有没有一种可能,同步、异步、阻塞、非阻塞,这几个关键词拆开看都感觉挺明白的。但是同步阻塞、同步非阻塞、异步阻塞、异步非阻塞,这几个关键词组装起来,看起来就有点那么晦涩了。这个在日常八股中经常出现字眼,其背后对应的到底是个什么样的逻辑?我们来一起揭开它那不那么神秘的面纱。/手动狗头。
120 0
阻塞/阻塞/同步/异步
|
调度
线程的状态及阻塞
之前提到了线程和进程,那就提一下线程的状态吧!
251 0
线程的同步
线程的同步
130 0