没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论





























实验七:Linux 多线程编程(4 课时)
实验目的:掌握线程的概念;熟悉 Linux 下线程程序编译的过程;掌握多线程
程序编写方法。
实验原理:为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪
些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。
1 多线程概念
使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。
运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分
数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间。
使用多线程的理由之二是线程间方便的通信机制。同一进程下的线程之间共享数
据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
2 多线程编程函数
Linux 系统下的多线程遵循 POSIX 线程接口,称为 pthread。编写 Linux 下的
多线程程序,需要使用头文件 pthread.h,连接时需要使用库 libpthread.a。
pthread_t 在头文件/usr/include/bits/pthreadtypes.h 中定义:
typedef unsigned long int pthread_t; 它是一个线程的标识符。
函数 pthread_create 用来创建一个线程,它的原型为:
extern int pthread_create((pthread_t *thread, const pthread_attr_t
*attr,
void *(*start_routine) (void *), void *arg));
第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参
数是线程运行函数的起始地址,最后一个参数是运行函数的参数。
函数 pthread_join 用来等待一个线程的结束。函数原型为:
extern int pthread_join(pthread_t th, void **thread_return);
第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以
用来存储被等待线程的返回值。
函数 pthread_exit 的函数原型为:
extern void pthread_exit(void *retval);
唯 一 的 参 数 是 函 数 的 返 回 代 码 , 只 要 pthread_join 中 的 第 二 个 参 数
thread_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 进行存放,一般说来,我们总是先取优先级,
对取得的值修改后再存放回去。
4 线程的数据处理
资源评论


Enthralled
- 粉丝: 5
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 微信小程序 · 美食地图模板
- 微信小程序-GetWeApp聊天室
- 带表卡尺模型文件,带表卡尺模型文件
- C++STL之 string
- Python100-master (3).zip
- Python100-master (4).zip
- Qt 实现串口数据实时读取与网口转发
- Python100-master (5).zip
- 微信小程序里的掘金信息流内容展示
- MOS管防止电源反接原理及应用
- 微信小程序中引入 ES6 的 Promise 方法详解
- Everything:快到离谱的文件搜索神器
- 《新大学俄语第一册课件整理版》
- Odoo 系统对接微信小程序商城管理后台
- ubuntu:24.04的docker镜像包,需要使用docker命令进行加载
- 基于MPI实现的矩阵向量相乘并行算法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
