




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线程同步-互斥量学习目标掌握使用互斥量进行线程之间的同步线程同步线程共享进程空间内的资源,这使得线程之间的通信变得非常容易。但同样是由于共享资源,因此在多线程并发执行的环境中就有可能出现操作冲突的情况。
本节将介绍使用互斥量进行线程之间的同步操作,使线程在访问共享资源时受到用户的控制,从而正常地完成任务。互斥量互斥量是一种锁,在访问共享资源时对其加锁,在结束访问时释放锁。这样可以保证在任意时间内,只有一个线程处于临界区内。任何想要进入临界区的线程都要对锁进行测试,如果该锁已经被某一个线程所持有,则测试线程会被阻塞,直到该锁被释放,线程会重复上述过程。在线程没有释放锁之前,所有试图进入临界区的线程都将被阻塞,形成一个阻塞线程的队列互斥量Linux环境下使用pthread_mutex_t数据类型表示互斥量,用户不需要了解该类型的实现细节,在使用互斥量之前要对其进行初始化。Linux环境下使用ptbread_mutex_init()函数对互斥量进行初始化。函数原型如下:#include<pthread.h>Intpthread_mutex_init(pthread_mutex_t*restrictmutex,constpthread_mutexattr*restrictattr);互斥量函数的第1个参数是互斥量的指针,互斥量在该函数内被初始化,并通过此参数返回给调用者。第2个参数是互斥量的属性,在此先将该参数设置为
NULL。内核会使用默认属性对互斥量进行初始化。如果初始化成功,pthread_mutex_init()函数返回0,失败则返回错误号。互斥量当一个互斥量不再使用时应将其销毁
Linux环境下使用pthread_mutex_destroy()函数销毁一个互斥量。#include<pthread.h>intpthread_mutex_destroy(pthreadrnutex_t•rnutex);函数的参数表示需要销毁的互斥量。如果成功销毁互斥量,pthread_mutex_destroy()函数返回0,失败则返回错误号。互斥量互斥量作为一个对于用户来说透明的数据结构,用户不可以直接对其进行操作,而应当使用系统提供的操作互斥量的函数接口。这样做符合程序编写时的封装原则,有利于程序的模块化。Linux环境使用一组函数操作互斥量,得到互斥量锁和释放互斥量的锁。#include<pthread.h>intpthread_mutex_lock(pthread_mutext*mutex);intpthread_mutex_trylock(pthread_mutex_t*mutex);intpthread_mutex_unlock(pthread_mutex_t*mutex);互斥量前2个函数用于得到一个互斥量的锁(对临界区加锁)。
第3个函数用于释放互斥量的锁以对临界区解锁。互斥量Pthread_mutex_lock()函数的参数表示一个互斥量,调用线程希望得到该互斥量的锁。如果该互斥量的锁已经被某一个线程得到,那么该函数会导致线程阻塞,直到互斥量的锁被释放。如果成功得到锁,pthread_mutex_lock()函数返回0,如失败则返回错误号。互斥量Pthread_mutex_trylock()函数参数和返回值的意义同pthread_mutex_lock()函数,二者仅有一点不同,即pthread_mutex_trylock()函数在得不到指定互斥量的锁时并不会导致调用线程阻塞,而是立即返回一个错误编号EBUSY,表示所申请的锁处于繁忙状态。互斥量Pthread_mutex_unlock函数用于释放一个互斥量的锁,其参数表示需要释放锁的互斥量。如果成功释放,pthread_mutex_unlock()函数返回0,失败则返回错误号。实例线程同步的一种方法-互斥量。通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年玻璃纤维仿形织物项目投资风险评估报告
- “软件工程”意识在网页设计教学中的应用
- 2025年IC卡售气系统项目合作计划书
- 企业法律风险防控
- 体育锻炼防受伤课件视频
- 数学 第四册(五年制高职) 教案 1.6 第16章逻辑代数初步 复习
- 国际贸易与物流师试题及答案
- 统编版语文五年级下册《语文园地四》精美课件
- 广西玉林市博白县2025届高三考前热身化学试卷含解析
- 植物细胞亡的机制研究试题及答案
- 陕西省汉中市汉台区部分学校 2024-2025学年七年级下学期第一次月考道德与法治试题(原卷版+解析版)
- 2025上半年江西赣州市人民医院招考聘用工作人员自考难、易点模拟试卷(共500题附带答案详解)
- GB/T 15683-2025粮油检验大米直链淀粉含量的测定
- 3.2依法行使权利 课件-2024-2025学年统编版道德与法治八年级下册
- 2024-2025学年北京市东城区五下数学期末检测试题含答案
- DB32T 5003-2025小微型和劳动密集型工业企业现场安全管理规范
- 《积极心理学(第3版)》 课件 第4章 乐观
- GB/T 10000-2023中国成年人人体尺寸
- 2022公务员录用体检操作手册(试行)
- 反应釜规格尺寸大全(79标、93标)
- 铁路隧道衬砌施工成套技术(图文并茂)
评论
0/150
提交评论