《5-UNIXLinux操作系统编程-线程》.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线程编程 * * “线程”基本概念 线程是进程内的独立执行实体和调度单元,又称为“轻量级”进程(lightwight process);创建线程比进程快10~100倍。一个进程内的所有线程共享相同的全局内存、全局变量等信息(这种机制又带来了同步问题)。它们共享以下信息: 共享信息 私有信息 进程指令 线程ID 大多数数据 寄存器集合(包括PC和栈指针) 打开的文件字 栈(用于存放局部变量) 信号处理程序和信号处置 error 当前工作目录 信号掩码 用户ID和组ID 优先级 * * 线程调用函数(1) #include pthread.h int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func)(void *), void *arg); 返回:成功时为0;出错时为正的Exxx值 当一个程序由exec启动时,系统会创建一个初始线程或主线程的单个线程。额外线程由上述函数创建; 新线程由线程id标识:tid,新线程的属性attr包括:优先级、初始栈大小、是否应该是守护线程等等。线程的执行函数和调用参数分别是:func和arg,该函数必须是一个静态函数; 由于线程的执行函数的参数和返回值类型均为void *,因此可传递和返回指向任何类型的指针; * * 线程函数调用(3) #include pthread.h void pthread_exit(void *status); 不返回调用者; 如果线程为可汇合的,将保留线程id和退出状态供pthread_join; 指针status不能指向局部于调用线程的对象,因为线程终止时这些对象也将消失; 还有其他两种方法可使线程终止 启动线程的函数(pthread_create的第3个参数)返回。既然该函数必须说明为返回一个void指针,该返回值便是线程的终止状态; 如果进程的main函数返回,或者任何线程调用了exit,进程将终止,线程也将随之终止。 * * 线程接口 线程编程接口 功能 pthread_cancel terminate another thread pthread_create create a thread pthread_detach set thread to release resources pthread_equal test two thread IDs for equality pthread_exit exit a thread without exiting process pthread_kill send a signal to a thread pthread_join wait for a thread pthread_self find out own thread ID * * 互斥量 可以通过使用pthread的互斥接口保护数据,确保同一时间里只有一个线程访问数据 互斥量mutex,本质上就是一把锁 在访问共享资源前,对互斥量进行加锁 在访问完成后释放互斥量上的锁 对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞,直到锁被释放 * * 互斥量的初始化 互斥量在使用前,必须要对互斥量进行初始化 函数原型 #includepthread.h int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); 参数与返回值 mutex:即互斥量,类型是pthread_mutex_t 注意:mutex必须指向有效的内存区域 * * 互斥量的初始化 int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); 参数与返回值 attr:设置互斥量的属性,通常可采用默认属性,即可将attr设为NULL。后面再讨论互斥量的属性 成功返回0,出错返回错误码 * * 互斥量的销毁 互斥量在使用完毕后,必须要对互斥量进行销毁,以释放资源 函数原型 #includepthread.h int pthread_mutex_destroy( pthread_mutex_t *mutex); 参数与返回值 mutex:即互斥量 成功返回0,出错返回错误码 * * 互斥量的加锁和解锁操作 在对共享资源访问之前和访问之后,需要对互斥量进行

文档评论(0)

ghfa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档