《Linux体系与编程——基于Linux 0.01版本》课件第9章.ppt

上传人:ds的n我 文档编号:43820217 上传时间:2024-05-12 格式:PPT 页数:13 大小:186.50KB
下载 相关 举报
《Linux体系与编程——基于Linux 0.01版本》课件第9章.ppt_第1页
第1页 / 共13页
《Linux体系与编程——基于Linux 0.01版本》课件第9章.ppt_第2页
第2页 / 共13页
《Linux体系与编程——基于Linux 0.01版本》课件第9章.ppt_第3页
第3页 / 共13页
《Linux体系与编程——基于Linux 0.01版本》课件第9章.ppt_第4页
第4页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、9.1 什么是线程 n进程指在操作系统中正在运行的一个应用程序,线程是操作系统系统分配给处理器时间资源的基本单元。n9.1.1 线程的特点 1.“节俭”的多任务操作方式 2.方便的通信机制 3.提高应用程序响应 4.改善程序结构 5.数据共享问题 9.1 什么是线程n9.1.2线程的分类 n1.用户线程 n2.内核线程 9.2 线程编程基础 n实例:pthread.c n注意:由于pthread 库不是 Linux 系统默认的库,链接时需要使用静态库 libpthread.a,所以在使用pthread_create等pthread_系列函数时,编译程序需要加上编译参数-lpthread,若不添

2、加则编译不通过。例如:gcc pthread.c-lpthread 9.2 线程编程基础 n9.2.1创建线程函数 npthread_create函数用于创建一个新线程,类似于创建新进程的fork函数。#include int pthread_create(pthread_t*tid,const pthread_attr_t*attr,void*(*func)(void*),void*arg);9.2 线程编程基础 n9.2.2等待线程结束的函数#include int pthread_join(pthread_t tid,void*status);n这个函数用于阻塞线程,调用这个函数的线程将

3、一直等待,到被等待的线程执行完为止,当函数返回时,被等待线程的资源被收回。9.2 线程编程基础 n9.2.3取自己线程ID函数#include pthread_t pthread_self(void);线程ID可以由pthread_creat函数的第一个参数返回,也可以用pthread_self函数在自己的线程内部取得本线程的ID。9.2 线程编程基础 n9.2.4终止线程函数#include void pthread_exit(void*retval);n一般结束一个线程有两种途径:一种是线程的执行函数结束了(由pthread_create函数的第三个参数和第四个参数确定的函数),调用它的线

4、程也就结束了;另一种方式是通过函数pthread_exit来实现。9.3线程属性 n线程属性封装在结构体pthread_attr_t中,该结构体在头文件/usr/include/bits/pthreadtypes.h中定义。如下:typedef struct _pthread_attr_sint _detachstate;/是否分离int _schedpolicy;/调度策略 struct _sched_param _schedparam;/线程的运行优先级 int _inheritsched;/显式指定还是继承调度策略和调度参数 int _scope;/表示线程间竞争CPU的范围,也就是说线

5、程优先级的有效范围 size_t _guardsize;int _stackaddr_set;void*_stackaddr;/线程栈的位置size_t _stacksize;/线程栈的大小 pthread_attr_t;9.3线程属性n1.线程属性初始化#include int pthread_attr_init(pthread_attr_t*attr);n可以通过pthread_attr_init函数初始化一个线程属性对象,调用pthread_attr_init函数之后,pthread_attr_t结构所包含的内容就是操作系统支持的线程所有属性的默认值。n2.是否分离 int pthrea

6、d_attr_setdetachstate(pthread_attr_t*attr,int detachstate);int pthread_attr_getdetachstate(const pthread_attr_t*attr,int*detachstate);9.3线程属性n2.是否分离 n可以通过pthread_attr_setdetachstate函数把线程属性_detachstate设置为PTHREAD_CREATE_DETACHED状态即以分离状态启动线程,不让主线程等待它的结束,即不能再调用pthread_join()来同步,在退出时自行释放所占用的资源。n3.调度策略 n4

7、.优先级 n5.继承性 n6.优先级范围n综合实例pthreadattributes.c 9.4线程访问控制 n1.互斥量#include int pthread_attr_init(pthread_attr_t*attr);nmutex互斥量可以用于控制线程的同步,它允许程序员对某个对象上锁,使得只能有一个线程访问这个对象。若有其他的线程想要访问已经上了锁的对象(或称为想要对已经上了锁的对象进行上锁操作),则该线程会被挂起,直到上锁的线程释放互斥量为止。9.4线程访问控制n1.互斥量n1)创建和销毁 n有两种方法可以创建互斥量:静态方式和动态方式。n可以通过pthread_mutex_destroy()注销一个互斥量。n2)锁操作。n锁操作主要包括加锁pthread_mutex_lock()、解锁pthread_mutex_unlock()和测试加锁pthread_mutex_trylock()三个,互斥量不可能被两个不同的线程同时使用,一个互斥量必须等待解锁后才能继续使用。n3)mutex互斥量使用示例pthreadrace_mutex.c 9.4线程访问控制n2.信号量n常用于线程同步的信号量函数主要有以下几个:1)创建和销毁2)申请和释放3)获取信号量值4)信号量使用示例threadrace_sem.c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 工程图书 > 建筑设计

客服QQ:2660337891点击这里给我发消息

手机:13423958347
 汇文网版权所有  联系邮箱:2660337891#qq.com (请把#改为@)  
  鄂ICP备2022007403号,本站可开发票,需开票联系客服QQ。