多线程与其应用场景(同步/异步)
在此之前必须先明确线程是操作系统的概念
https://www.cnblogs.com/ashet/p/18794669
在异步场景下使用多线程,是为了避免(允许滞后的)行为阻塞主线程,提高程序的响应速度和并发能力
在同步场景下使用多线程,是为了提高cpu利用程度(期望cpu多核并行多核处理器同时执行多个任务处理),达到最快的任务处理速度(前提是任务可拆分)
异步场景下使用多线程
主要是为了避免阻塞主线程,提高系统的并发能力,确保 API 或 UI 线程不会因为 I/O 操作(如数据库查询、网络请求)而卡住。
这里的滞后通常指的是任务本身的执行时间,比如请求外部服务的延迟。通过多线程,可以让主线程继续处理其他请求,而不会等待某个任务完成后再继续。
典型应用:Web 服务器、消息队列、事件驱动架构等。
同步场景下使用多线程
主要是为了提高 CPU 的利用率,充分发挥多核 CPU 的性能,并行加速计算。
适用于计算密集型任务(如科学计算、大规模数据处理、图像渲染等),前提是任务可以拆分成多个独立的部分,让多个线程或进程同时执行。
关键点:任务之间的同步、数据竞争和负载均衡。
加速原理:
假设任务可拆分为4个独立子任务,且CPU有4个核心:
单线程:总时间 = 子任务1时间 + 子任务2时间 + 子任务3时间 + 子任务4时间
4线程:总时间 ≈ 最慢的子任务时间(理想情况下接近单线程时间的1/4)
总结:
- 
异步 + 多线程 → 主要是避免 I/O 阻塞,提高吞吐量(适用于 I/O 密集型任务)。 
- 
同步 + 多线程 → 主要是提高计算效率,充分利用 CPU 资源(适用于计算密集型任务)。 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号