进程/线程、同步/异步、阻塞/非阻塞

简介:
1.进程和线程

(1)进程(process):
是windows系统中的重要概念,它包含着一个运行程序所需要的资源;一个正在运行的应用程序在操作系统中被视为一个进程(进程可以包含一个或多个线程);进程和进程之间是相互独立的,一个进程无法访问另外一个进程的数据
(2)线程(thread):
是进程中的基本执行单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被称为这个进程的主线程

进程和线程的区别:主要区别是它们是不同操作系统资源管理方式;
一个程序至少有一个进程,一个进程至少有一个线程
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径
线程不能够独立执行,必须依托于应用程序,由应用程序提供多个线程执行控制

2.同步和异步的区别

(1)同步:当一个同步调用发出去后,调用者需要一直等待调用的结果通知,才能进行后续的执行;
(2)异步:当一个同步调用发出后,调用者不必一直等待调用返回的结果;
两种方式:
1.主动轮询异步调用的结果
2.被调用方通过callback回调通知,来通知调用方调用结果

3.阻塞和非阻塞

阻塞和非阻塞的重点是在于进/线程等待消息的行为,也就是在等地等消息的时候,当进/线程是挂起状态,还是非挂起状态

(1)阻塞:调用在发出去之后,在消息返回之前,当进/线程会被挂起,直到有消息返回,当前的进/线程才会被激活
(2)非阻塞:调用在发出去后,不会阻塞当前进/线程,而会立即返回

同步和异步,重点在于消息通知的方式;阻塞和非阻塞,重点在于等消息时候的行为。

四种组合方式(老王烧水的例子):

同步阻塞:老王用水壶烧水,并且站在那里等着,啥都不干,每隔一定时间看水开没开;
同步非阻塞:老王用水壶烧水,跑回屋里玩游戏,但是还会每隔一段时间过来看看水开没开,水没开就回去

异步阻塞:老王这次使用响水壶烧水,站在那里啥都不干,但是不会再每隔一段时间去看水开,而是等水开了,水壶会自动通知他
异步非阻塞:老王使用响水壶烧水,跑回屋里玩游戏,等着水壶响了通知他

目录
相关文章
|
1月前
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
91 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
3月前
|
Java 开发者 C++
Java多线程同步大揭秘:synchronized与Lock的终极对决!
Java多线程同步大揭秘:synchronized与Lock的终极对决!
80 5
|
24天前
|
Python
多进程同步之文件锁
【10月更文挑战第16天】文件锁是一种常用的多进程同步机制,它可以用于确保多个进程在访问共享资源时的互斥性。在使用文件锁时,需要注意锁的粒度、释放、竞争和性能等问题。通过合理使用文件锁,可以提高多进程程序的正确性和性能
|
24天前
|
Java 调度
Java 线程同步的四种方式,最全详解,建议收藏!
本文详细解析了Java线程同步的四种方式:synchronized关键字、ReentrantLock、原子变量和ThreadLocal,通过实例代码和对比分析,帮助你深入理解线程同步机制。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 线程同步的四种方式,最全详解,建议收藏!
|
29天前
|
安全 Java 开发者
Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用
本文深入解析了Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用。通过示例代码展示了如何正确使用这些方法,并分享了最佳实践,帮助开发者避免常见陷阱,提高多线程程序的稳定性和效率。
38 1
|
1月前
|
安全 调度 C#
STA模型、同步上下文和多线程、异步调度
【10月更文挑战第19天】本文介绍了 STA 模型、同步上下文和多线程、异步调度的概念及其优缺点。STA 模型适用于单线程环境,确保资源访问的顺序性;同步上下文和多线程提高了程序的并发性和响应性,但增加了复杂性;异步调度提升了程序的响应性和资源利用率,但也带来了编程复杂性和错误处理的挑战。选择合适的模型需根据具体应用场景和需求进行权衡。
|
1月前
多线程通信和同步的方式有哪些?
【10月更文挑战第6天】
104 0
|
1月前
|
网络协议 安全 Java
难懂,误点!将多线程技术应用于Python的异步事件循环
难懂,误点!将多线程技术应用于Python的异步事件循环
66 0
|
2月前
|
设计模式 缓存 Java
谷粒商城笔记+踩坑(14)——异步和线程池
初始化线程的4种方式、线程池详解、异步编排 CompletableFuture
谷粒商城笔记+踩坑(14)——异步和线程池
|
3月前
|
安全 Java 开发者
Java多线程同步:synchronized与Lock的“爱恨情仇”!
Java多线程同步:synchronized与Lock的“爱恨情仇”!
86 5