1.进程和线程
(1)进程(process):
是windows系统中的重要概念,它包含着一个运行程序所需要的资源;一个正在运行的应用程序在操作系统中被视为一个进程(进程可以包含一个或多个线程);进程和进程之间是相互独立的,一个进程无法访问另外一个进程的数据
(2)线程(thread):
是进程中的基本执行单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被称为这个进程的主线程
进程和线程的区别:主要区别是它们是不同操作系统资源管理方式;
一个程序至少有一个进程,一个进程至少有一个线程
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径
线程不能够独立执行,必须依托于应用程序,由应用程序提供多个线程执行控制
2.同步和异步的区别
(1)同步:当一个同步调用发出去后,调用者需要一直等待调用的结果通知,才能进行后续的执行;
(2)异步:当一个同步调用发出后,调用者不必一直等待调用返回的结果;
两种方式:
1.主动轮询异步调用的结果
2.被调用方通过callback回调通知,来通知调用方调用结果
3.阻塞和非阻塞
阻塞和非阻塞的重点是在于进/线程等待消息的行为,也就是在等地等消息的时候,当进/线程是挂起状态,还是非挂起状态
(1)阻塞:调用在发出去之后,在消息返回之前,当进/线程会被挂起,直到有消息返回,当前的进/线程才会被激活
(2)非阻塞:调用在发出去后,不会阻塞当前进/线程,而会立即返回
同步和异步,重点在于消息通知的方式;阻塞和非阻塞,重点在于等消息时候的行为。
四种组合方式(老王烧水的例子):
同步阻塞:老王用水壶烧水,并且站在那里等着,啥都不干,每隔一定时间看水开没开;
同步非阻塞:老王用水壶烧水,跑回屋里玩游戏,但是还会每隔一段时间过来看看水开没开,水没开就回去
异步阻塞:老王这次使用响水壶烧水,站在那里啥都不干,但是不会再每隔一段时间去看水开,而是等水开了,水壶会自动通知他
异步非阻塞:老王使用响水壶烧水,跑回屋里玩游戏,等着水壶响了通知他