嵌入式Linux应用开发编程基础教案任务13:多线程编程.docxVIP

  • 0
  • 0
  • 约1.72千字
  • 约 4页
  • 2026-02-04 发布于湖南
  • 举报

嵌入式Linux应用开发编程基础教案任务13:多线程编程.docx

长春职业技术学院课程教案首页

No.13

授课题目

任务13:多线程编程

教学单元

学时

2[]4[?]

教学目标

[知识目标]:

1.线程基本编程;

2.线程之间的同步与互斥;

3.线程属性。

[能力目标]:

1.会线程基本编程;

2.理解线程的概念;

[素质目标]:

1.培养学生分析及解决问题能力;

2.培养学生具备嵌入式Linux开发的能力;

重点

难点

重点:线程基本编程

难点:线程之间的同步与互斥

教学方法

讲授法、演示法、实验法

能力训练

(作业)

教学体会

授课班级

授课时间及地点

年月日(星期)第节,楼室

年月日(星期)第节,楼室

年月日(星期)第节,楼室

年月日(星期)第节,楼室

长春职业技术学院课程教案用纸

教学环节

教学内容

备注

课程导入

复习提问:

Linux进程间通信有哪几种方式?

共享内存通信的原理?

消息队列通信的原理?

宣布本节课的主容:任务13:多线程编程

1.线程基本编程;●

2.线程之间的同步与互斥;★

3.线程属性。

(●为重点内容★为难点内容)

15’

复习提问

讲与听

一、线程编程基础

1、线程基础

每个用户进程有自己的地址空间

系统为每个用户进程创建一个

task_struct来描述该进程

该结构体中包含了一个指针指向该进

程的虚拟地址空间映射表

实际上task_struct和地址空间映射表一起用来

表示一个进程

对于LINUX来说,进程和线程都是任务

由于进程的地址空间是私有的,因此在进程间上下文切换时,系统开销比较大

为了提高系统的性能,许多操作系统规范里引入了轻量级进程的概念,也被称为线程

在同一个进程中创建的线程共享该进程的地址空间

Linux里同样用task_struct来描述一个线程。线程和进程都参与统一的调度

使用多线程的好处

大大提高了任务切换的效率

避免了额外的TLBcache的刷新

多线程通过第三方的线程库来实现

NewPOSIXThreadLibrary(NPTL)

是早期LinuxThreads的改进

采用1:1的线程模型

显著的提高了运行效率

信号处理效率更高

一个进程中的多个线程共享以下资源

可执行的指令

静态数据

进程中打开的文件描述符

信号处理函数

当前工作目录

用户ID

用户组ID

2、多线程编程

(1)NPTL线程库中提供了如下基本操作

创建线程

删除线程

控制线程

二、线程之间的同步与互斥

(1)信号量

(2)互斥锁

(3)条件变量

三、线程属性

pthread_create()函数的第二个参数(pthread_attr_t*attr)表示线程的属性。如果该值设为NULL,就是采用默认属性,线程的多项属性都是可以更改的。这些属性主要包括绑定属性、分离属性、堆栈地址、堆栈大小以及优先级。其中系统默认的属性为非绑定、非分离、缺省1M的堆栈以及与父进程同样级别的优先级。

绑定属性

分离属性

40’

讲授法,演示法

练与做

互动交流

学生实训

实训1:线程互斥实验P185

教师巡视指导,改错。

80’

实验法

结与拓

学生总结实验结果。

(1)学生完成习题,各小组阐述相关内容,提问。

(2)教师着重解决普遍存在的问题,答疑;学生反思,整理笔记。

(25分钟)

课堂总结

由学生发言进行总结,之后老师点评:

1.本次课程需要涉及的知识点

2.本次课程需要达到的目标

总结引申

(20分钟)

文档评论(0)

1亿VIP精品文档

相关文档