没有合适的资源?快使用搜索试试~ 我知道了~
实验七:Linux多线程编程(实验报告).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 181 浏览量
2023-07-31
23:25:23
上传
评论
收藏 541KB PDF 举报
温馨提示
试读
7页
实验七:Linux多线程编程(实验报告).pdf
资源推荐
资源详情
资源评论
--
--
实验七:Linux 多线程编程(4课时)
实验目的:掌握线程的概念;熟悉 Linux 下线程程序编译的过程;掌握多线程程
序编写方法。
实验原理:为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪
些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。
1 多线程概念
使用多线程的理由之一是和进程相比,它是一种非常它是一种非常 节俭"的多任务操作方式。
运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分
数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间。
使用多线程的理由之二是线程间方便的通信机制。同一进程下的线程之间共享数
据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
2 多线程编程函数
Linux系统下的多线程遵循 POSIX 线程接口,称为 pthread。编写 Lin
ux 下的多线程程序,需要使用头文件 pthread.h,连接时需要使用库 libpt
hread.a。
pthread_t 在头文件/usr/include/bits/pthreadtypes.h中定义:
typedef unsigned long int pthread_t; 它是一个线程的标识符。
函数 pthread_create 用来创建一个线程,它的原型为:
extern int pthread_create((pthread_t *thread, const pthre
ad_attr_t *attr,
void *(*start_routine) (void *), void *arg));
第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参
数是线程运行函数的起始地址,最后一个参数是运行函数的参数。
函数 pthread_join 用来等待一个线程的结束。函数原型为:
extern int pthread_join(pthread_t th, void **thread_r
eturn);
第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以
用来存储被等待线程的返回值。
函数 pthread_exit 的函数原型为:
extern void pthread_exit(void *retval);
唯一的参数是函数的返回代码,只要 pthread_join 中的第二个参数 th
read_return 不是 NULL,这个值将被传递给 thread_return。
3 修改线程的属性
线程属性结构为pthread_attr_t,它在头文件/usr/include/pthread.h
中定义。属性值不能直接设置,须使用相关函数进行操作,初始化的函数为
pthread_attr_init,这个函数必须在pthread_create 函数之前调用。
设置线程绑定状态的函数为 pthread_attr_setscope,它有两个参数,第
一个是指向属性结构的指针,第二个是绑定类型,它有两个取值:PTHREAD
_SCOPE_SYSTEM(绑定的)和 PTHREAD_SCOPE_PROCESS(非绑定
的)。
另外一个可能常用的属性是线程的优先级,它存放在结构 sched_param 中。
用函数 pthread_attr_getschedparam 和函数 pthread_attr
_setschedparam 进行存放,一般说来,我们总是先取优先级,对取得的值修改后
资源评论
hhappy0123456789
- 粉丝: 61
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Pytorch-pytorch深度学习教程之逻辑回归.zip
- Pytorch-pytorch深度学习教程之双向循环网络.zip
- Pytorch-pytorch深度学习教程之卷积神经网络.zip
- Pytorch-pytorch深度学习教程之前馈神经网络.zip
- Pytorch-pytorch深度学习教程之线性回归.zip
- Pytorch-pytorch深度学习教程之基本操作.zip
- 基于QT的地图可视化桌面系统后台数据库为MySQL5.7源码.zip
- 基于simulink的PLL锁相环系统仿真【包括模型,文档,参考文献,操作步骤】
- 基于EM-GMM模型的目标跟踪和异常行为检测matlab仿真【包括程序,注释,参考文献,操作步骤,说明文档】
- 2109010044_胡晨燕_选课管理数据库设计与实现.prj
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功