linux线程专题笔记.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
### Linux线程专题知识点 #### 一、线程概念与模型 **1. 线程概念** - **定义**: 在一个程序里的一个执行路径称为线程(Thread)。更确切地说,线程是一个进程内部的控制序列。 - **特征**: 每个进程至少有一个执行线程。 **2. 进程与线程的区别** - **进程**: 是资源竞争的基本单位。 - **线程**: 是程序执行的最小单位。 - **共享与独立**: 线程共享进程的数据段、代码段等资源,但也拥有自己的一些私有数据如栈、程序计数器等。 **3. 线程ID** - 每个线程都有唯一的线程ID,用于标识线程。 - 包括但不限于:程序计数器、寄存器组、栈等。 **4. fork与创建新线程的区别** - **fork调用**: 创建进程的新拷贝,新进程具有独立的内存空间和PID。 - **创建新线程**: 新线程共享所属进程的内存空间,但拥有独立的栈。 **5. 线程的优点** - **成本较低**: 创建线程比创建进程的成本低。 - **切换开销小**: 线程间切换开销小于进程间切换。 - **资源占用少**: 线程相比进程占用较少的资源。 - **并行处理**: 更好地利用多处理器的并行能力。 - **I/O操作**: 可以同时等待不同的I/O操作,提高性能。 **6. 线程的缺点** - **性能损失**: 计算密集型线程可能因缺乏并行而产生较大性能损失。 - **健壮性问题**: 编写多线程程序更复杂,容易出现竞态条件等问题。 - **访问控制不足**: 线程操作可能会影响到整个进程的状态。 - **调试困难**: 多线程程序调试难度较高。 #### 二、线程API与属性 **1. 基本API** - **线程创建**: `pthread_create()` - **线程结束**: `pthread_exit()` - **线程取消**: `pthread_cancel()` - **线程加入**: `pthread_join()` **2. 线程属性** - **线程优先级**: 设置线程的优先级。 - **线程调度策略**: 确定线程的调度方式。 - **线程分离性**: 决定线程是否自动释放资源。 **3. 线程客户端测试框架** - 设计用于测试线程功能的框架,确保线程正确运行。 **4. 多线程服务器框架** - 构建能够支持多线程并发处理请求的服务器架构。 #### 三、线程互斥与同步 **1. 基本概念** - **互斥锁**: 控制对共享资源的访问,确保一次只有一个线程访问。 - **条件变量**: 使线程能够在满足特定条件时被唤醒。 **2. POSIX互斥锁** - **初始化**: 使用`pthread_mutex_init()`初始化互斥锁。 - **加锁解锁**: 使用`pthread_mutex_lock()`加锁和`pthread_mutex_unlock()`解锁。 - **销毁**: 使用`pthread_mutex_destroy()`销毁互斥锁。 **3. POSIX条件变量** - **初始化**: 使用`pthread_cond_init()`初始化条件变量。 - **等待**: 使用`pthread_cond_wait()`使线程等待。 - **信号**: 使用`pthread_cond_signal()`唤醒等待的线程。 **4. 综合案例** - **多线程互斥案例**: 实现线程间的互斥访问。 - **线程同步案例**: 实现线程间的同步操作。 #### 四、线程调度竞争范围 **1. 进程竞争范围** - 线程只与同进程中的其他线程竞争CPU时间。 **2. 系统竞争范围** - 线程与系统范围内所有线程竞争CPU时间。 #### 五、线程模型 **1. N:1 用户线程模型** - **特点**: OS内核不直接管理用户线程。 - **优点**: 上下文切换开销小。 - **缺点**: 无法利用多处理器优势;阻塞操作导致整个进程阻塞。 **2. 1:1 核心线程模型** - **特点**: 每个用户线程对应一个内核线程。 - **优点**: 充分利用多处理器。 - **缺点**: 创建和销毁线程开销大。 **3. N:M 混合线程模型** - **特点**: 多个用户线程映射到少量内核线程。 - **优点**: 结合了用户线程和核心线程的优点。 - **缺点**: 实现复杂。 **总结** - 用户级线程解决了上下文切换的问题,但在多线程并行方面存在局限。 - 轻量级进程是内核支持的用户线程,结合了用户线程和内核线程的优点,提高了并行处理能力。 - 不同的线程模型适用于不同的场景需求。
- 粉丝: 364
- 资源: 8440
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- training_plan_db.sql
- 2c4f3adc7be59975e81fa0c1f24cb6ea.JPG
- python爬虫入门,分享给有需要的人,仅供参考
- 722bf4c3ee17fa231ad9efcb12407aa0.JPG
- 15da2b5d3ceeddc8af2f6a7eed26d7e0.JPG
- 7ae59002be36a13ad6de32c4e633a196.JPG
- spark中文文档,spark操作手册以及使用规范
- WPF-Halcon算法平台,类似于海康威視VisionMater.zip
- Fake Location,可用来王者荣誉修改战区及企业微信定位打卡等
- the fire level NULL