5.线程(thread)
动机
- 一个应用通常需要处理很多工作,这些同时执行徳任务可以称为“执行流”,我们不希望他们是顺序执行的。
- 进程的创建需要消耗大量的时间和资源
- 现在,和一个应用相关的所有执行的任务都装在一个进程里面,这些进程内部的执行任务就是“线程”
thread
- multithreaded process(多线程)
- shared(共享)
- 访问代价低
- 存储资源节省
- 如果是多进程,那么会使用多个内存空间,并且对于需要共享的资源,还需要进程机制去共享资源,又会耗费时间。
- 共享code,data,files
- 采用多线程的优点
- 响应性:可以加快响应
- 资源共享:code data files
- 经济:创建和切换比多进程好
- 可伸缩性:多核下可以并行
- definition of threa
- A thread is a basic unit(基本单元) of CPU utilzation(利用); it comprises a thread id(tid),a program counter, a register set,and a stack(存储局部变量).
- It shares(共享) with other threads belonging to the same process its code section,data section ,and other operating-system resources,such as open files and signals.
- A traditional (or heavyweight) process has a single thread of control .If a process has multiple threads of control ,it can perform more than one task at a time.
多线程模型
- 多核编程
- 在多处理器系统中,多核编程机制让应用程序可以更加有效地将自身的多个执行任务(并发的线程)分散到不同的处理器上去运行,以实现并行计算。
- 所以我们一般考虑多核编程
- 多线程模型
- 用户线程ULT(user level thread)
- ULT在user mode 下运行,它的管理无需内核支持
- 内核线程KLT(Kernel Level Thread)
- M:1模型
- 多个用户线程对一个内核线程
- 优点与缺点:
- 优点:多个执行流
- 缺点:实际上只有一个内核线程,多个用户线程,在一个时刻只有一个用户线程在运行。
- 1:1模型
- 一个用户线程对应一个核心线程,对应一个cpu
- 优点:并发+并行
- 缺点:内核开销大(时间,空间)
- M:M
- 多路复用,多个用户线程对应多个核心线程
- 优点:节省内核开销
- 缺点:实现起来复杂(需要一个管理机制,管理多少个user mode 和kernel mode)
线程库
- thread library为程序员提供创建和管理线程的API
- posix pthreads:用户线程库和内核线程库
- windows thread:内核线程库
- java thread:依赖所依赖的操作系统而定
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了