二章多线程编程方法综述教学文案.pptVIP

  • 1
  • 0
  • 约小于1千字
  • 约 44页
  • 2019-11-04 发布于天津
  • 举报
第二章 多线程编程方法综述;免费午餐结束了;线程的基本概念 线程的同步 多线程编程模型 多线程编程的原则及要点;1. 线程的基本概念 ;线程;1.1 线程与进程的区别;1.1 线程与进程的区别;1.1 线程与进程的区别;1.1 线程与进程的区别;1.1 线程与进程的区别;1.2 用户级线程、核心级线程和硬件线程 ;1.2 用户级线程、核心级线程和硬件线程;用户级线程和核心级线程之间的映射方式;多对多映射 ;1.3 线程的生命周期 ;2 线程的同步 ;为什么需要线程同步?;常用的线程同步方法;2.1 临界区-----互斥 ;2.2 信号量;锁类似于信号量,不同之处在于同一时刻只能使用一个锁。 锁对应两个原子操作: Acquire()获取操作,将锁据为己有并把状态改为已加锁,如果该锁已被其他线程占有则等待,锁状态保持未加锁状态。 Release()释放操作,将锁状态由已加锁状态改为未加锁状态。 一个锁最多只能由一个线程获得。 任何线程访问共享资源前要先获得锁,否则,线程将保持在该锁的等待队列,直到该锁被释放。;互斥量是一种锁,线程对共享资源访问之前必须先获得锁;否则线程将保持等待状态,直到该锁可用。 占有这个锁的过程就叫做锁定,或者叫获得互斥量。;2.4 锁;2.4 锁;2.5 条件变量 ;2.5 条件变量;Lock L; Bool LC = false; void producer() { while(1) { L-acquire(); //临界区开始 while (LC==true) { C-wait(L); } //产生下一个数据 LC=true; C-signal(L); //临界区结束 L-release(); };3. 多线程的编程模型;;三种多线程编程模型;3.1 流水线编程模型 What Is Pipelining;What Is Pipelining;What Is Pipelining Start work ASAP;3.1 流水线编程模型;3.1 流水线编程模型;3.2 工作组编程模型;3.2 工作组编程模型;3.3 客户端/服务器方式;4. 多线程编程的原则及要点;负载平衡;负载平衡的难题;串行化问题;解决措施

文档评论(0)

1亿VIP精品文档

相关文档