多线程与其应用场景(同步/异步)

在此之前必须先明确线程是操作系统的概念 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 资源(适用于计算密集型任务)。

posted @ 2025-03-26 20:58  Ashe|||^_^  阅读(82)  评论(0)    收藏  举报