进程和线程
进程拥有资源,包括:内存空间中的代码、数据等;I/O 资源;打开文件;CPU等。
线程执行任务,线程只拥有CPU和少量寄存器,线程之间共享进程的资源。
为什么需要线程
进程切换开销大,主要包括:
- CPU的上下文切换:保存和恢复相关寄存器的内容
- 进程相关的数据结构切换:页表、文件描述符、消息队列等.
线程切换只需要切换CPU上下文、不需要改变地址空间切换页表等。
线程优缺点
优点
- 切换快
- 共享内存,通信方便
缺点
- 一个线程出错,进程终止。
- 共享内存有并发问题。
线程的独占资源
- 一组寄存器
- 栈,每个线程有独立的栈
- 错误返回码
- 信号屏蔽码,每个线程感兴趣的信号不同
线程底层
clone (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, 0);
共享地址空间、文件系统信息、打开文件、信号处理函数及被阻断信号。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)