欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 线程、线程池、异步

线程、线程池、异步

2025/5/22 15:21:23 来源:https://blog.csdn.net/2301_78856868/article/details/148126276  浏览:    关键词:线程、线程池、异步

目录

什么是线程

什么是线程池

什么是异步

异步与线程关系

JS中的异步


什么是线程

线程 Thread 是计算机执行的最小单位,是 进程 内的一个实体,可以被操作系统独立调用和执行

线程可以理解为进程内的“程序执行流”,一个进程可以包含多个线程,所有线程共享该进程的资源,但每个线程都有自己的执行堆栈和程序计数器

多线程可以并行执行

在浏览器环境(多线程)中, JS (单线程)通常运行在 主线程(UI线程)上,浏览器还有渲染线程、网络线程、Web Worker 线程(允许JS在后台运行不阻塞UI)

一般浏览器的多 进程 架构:

1.浏览器主进程:负责UI交互、子进程管理等等

2.渲染进程:负责处理HTML、CSS、JS的解析,JS一般就是这里面的主进程

3.网络进程:处理网络请求

4.GPU进程:处理图形绘制

5.插件进程:运行浏览器插件

什么是线程池

线程池是一种线程使用模式,预先创建一定数量的线程,然后重复使用这些线程执行任务,而不是为了每个任务创建和销毁线程

在需要执行任务时从池中取出一个空闲线程来执行,任务完成后不会消毁,而是返回池中

主要组成部分

        线程集合

        任务队列

        线程管理机制

线程池优势

        不用频繁创建和销毁线程,提高效率

        就像先开了一个静态数组一样,可以提高资源的管理性

        提高响应速度

在浏览器中的应用

        网络线程池:处理多个并发网络请求

        工作线程池:处理后台任务

        渲染线程池:用于页面渲染

什么是异步

异步是一种程序执行的模式,它允许程序在等待某个操作完成的同时继续执行其他代码,而不是等待该操作完成,在异步操作完成后,程序会得到通知(通常是回调函数、Promise、async/await)

同步是像队列一样一步步执行,如果某个操作耗时过长,会导致阻塞

使用异步提高效率的同时,可能也会因为回调导致代码复杂性提高,不易维护

异步与线程关系

异步是目的,线程是实现手段,比如构造线程池

异步不局限于线程:

        硬件级异步:如DMA(直接内存访问)技术允许硬件设备独立完成数据传输,无需CPU干预

        系统级异步:比如windows的IOCP(IO完成端口)

        单线程异步:比如JS、Go的协同等,通过任务调度(外部)在单线程内实现异步 

在异步框架(如 Node.js )中,主线程处理I/O回调,计算密集型任务仍然在工作线程执行      

JS中的异步

JS是单线程主要是为了简化DOM操作,防止多个线程同时修改DOM 

JS作为单线程语言,如果不使用异步会导致阻塞

于是JS利用浏览器内置的多线程功能,加上事件循环和回调队列的协作来实现

1.回调函数

setTimeout(() => {console.log("这段代码会在3秒后执行");
}, 3000);

2.Promise

fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error('出错了:', error));

3.Async/Await

async function fetchData() {try {const response = await fetch('https://api.example.com/data');const data = await response.json();console.log(data);} catch (error) {console.error('出错了:', error);}
}

还有像事件监听器就是一个异步例子,它在浏览器主线程上注册

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词