版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
读写锁的特点:读共享,写独占,写优先级高读写锁仍然是一把锁,有不同的状态:读写读写锁场景练习线程A加写锁成功 线程B请求读线程B线程A持有读锁 线程B请求写线程B线程A拥有读锁 线程B请求读B加锁 BCA释放后,BB释放后,C线程A持有写锁 然后线程B请求读锁 然后程C请求BC阻A释放,C加C释放,B加constpthread_rwlockattr_t*restrictattr);pthread_rwlock_trwlock=销毁读intintintint条件变 条件变量不是所,要和互斥量-pthread_mutex_t*restrictmutex,structtimespec}
time_t longtv_nsec;/*nanosecondes*tv_sec绝对时间,填写的时候time(NULL)+600==>设置超时条件变量阻塞pthread_mutex_t*restrict先释放锁阻塞在cond条件变量上intpthread_cond_destroy(pthread_cond_t初始化一个条constpthread_condattr_t*restrictattr);intpthread_cond_broadcast(pthread_cond_t条件变量的作用:避免无必要内容 创建线程回收线程线程退出pthread_exit杀死线程pthread_cancel线程分离pthread_detach,也可以通过属性设置pthread_attr_setdetachstate设置属性分离,之前需要查看线程IDpthread_self在进程内唯一 信号量是进化版的互斥量,允许多个线程共享资intsem_init(sem_t*sem,intpshared,unsignedintsem定义的信号量0代表线程信非0代表进程信value定义信号量的sem_destroy摧毁信号intsem_destroy(sem_t*sem);申请信号量,申请成功value--intsem_wait(sem_t*sem);释放信号量value++intsem_post(sem_t分区linux-day09-线程同步的第9 实现常见两个现象的死锁,锁了又锁以及交叉实现哲学家分区linux-day09-线程同步的第10errno #defineEPERM 1/*Operationnotpermitted*/#defineENOENT 2/*Nosuchfileordirectory*/#defineESRCH 3/*Nosuchprocess*/#defineEINTR /*Interruptedsystemcall*/#defineEIO /*I/Oerror*/#defineENXIO /*Nosuchdeviceoraddress*/#defineE2BIG /*Argumentlisttoolong*/#defineENOEXEC /*Execformaterror*/#defineEBADF /*Badfilenumber*/#defineECHILD /*Nochildprocesses*/#defineEAGAIN /*Tryagain*/#defineENOMEM12/*Outofmemory*/#defineEACCES13/*Permissiondenied*/#defineEFAULT14/*Badaddress*/#defineENOTBLK15/*Blockdevicerequired*/#defineEBUSY 16/*Deviceorresourcebusy*/#defineEEXIST17/*Fileexists*/#defineEXDEV /*Cross-devicelink*/#defineENODEV /*Nosuchdevice*/#defineENOTDIR /*Notadirectory*/#defineEISDIR /*Isadirectory*/#defineEINVAL 22 /*Invalidargument*/#defineENFILE /*Filetableoverflow*/#defineEMFILE 24 /*Toomanyopenfiles*/#defineENOTTY /*Notatypewriter*/#defineETXTBSY /*Textfilebusy*/#defineEFBIG /*Filetoolarge*/#defineENOSPC /*Nospaceleftondevice*/#defineESPIPE /*Illegalseek*/#defineEROFS /*Read-onlyfilesystem*/#defineEMLINK /*Toomanylinks*/ /*Brokenpipe /*Mathargumentoutofof /*Mathresultnotrepresentable#defineEDEADLK /*Resourcedeadlockwouldoccur*/#defineENALONG /*Filenametoolong*/#defineENOLCK /*Norecordlocksavailable*/#defineENOSYS /*Invalidsystemcallnumber*/#defineENOTEMPTY /*Directorynotempty*/ /*Toomanysymboliclinks#defineEWOULDBLOCK EAGAIN/*Operationwouldblock*/#defineENOMSG /*Nomessageofdesiredtype*/#defineEIDRM /*Identifierremoved*/#defineECHRNG /*Channelnumberoutofrange*/#defineEL2NSYNC /*Level2notsynchronized*/#defineEL3HLT /*Level3halted*/ /*Level3reset#defineELNRNG /*Linknumberoutofrange*/#defineEUNATCH /*Protocoldrivernotattached*/#defineENOCSI /*NoCSIstructureavailable*/#defineEL2HLT /*Level2halted*/ /*Invalidexchange#defineEBADR 53 /*Invalidrequestdescriptor*/#defineEXFULL /*Exchangefull*/ /*Noanode#defineEBADRQC /*Invalidrequestcode*/#defineEBADSLT /*Invalidslot*/ #defineEBFONT /*Badfontfileformat*/#defineENOSTR /*Devicenotastream*/#defineENODATA /*Nodataavailable*/#defineETIME /*Timerexpired*/ /*Outofstreamsresources#defineENONET /*Machineisnotonthenetwork*/#defineENOPKG 65 /*Packagenotinstalled*/#defineEREMOTE /*Objectisremote*/#defineENOLINK /*Linkhasbeensevered*/#defineEADV /*Advertiseerror*/ /*Srmounterror#defineECOMM /*Communicationerroronsend*/#defineEPROTO /*Protocolerror*/#defineEMULTIHOP /*Multihopattempted*/#defineEDOTDOT /*RFSspecificerror*/#defineEBADMSG /*Notadatamessage*/#defineEOVERFLOW /*Valuetoolargefordefineddatatype*/#defineENOTUNIQ /*Namenotuniqueonnetwork*/#defineEBADFD /*Filedescriptorinbadstate*/#defineEREMCHG /*Remoteaddresschanged*/ /*Cannotaccessaneededshared#defineELIBBAD 80 /*Accessingacorruptedsharedlibrary*/ /*.libsectionina.outcorrupted*/#defineELIBMAX /*Attemptingtolinkintoomanysharedlibraries*/ /*Cannotexecasharedlibrary /*Illegalbytesequence#defineERESTART /*Interruptedsystemcallshouldberestarted*/#defineESTRPIPE /*Streamspipeerror*/#defineEUSERS /*Toomanyusers*/#defineENOTSOCK88/*Socketoperationonnon-socket*/#defineEDESTADDRREQ89/*Destinationaddressrequired*/#defineEMSGSIZE90/*Messagetoolong*/#defineEPROTOTYPE /*Protocolwrongtypeforsocket*/#defineENOPROTOOPT /*Protocolnotavailable*/#defineEPROTONOSUPPORT93 /*Protocolnotsupported*/#defineESOCKTNOSUPPORT94 /*Sockettypenotsupported*/#defineEOPNOTSUPP /*Operationnotsupportedontransportendpoint*/ /*Protocolfamilynotsupported#defineEAFNOSUPPORT /*Addressfamilynotsupportedbyprotocol*/ /*Addressalreadyinuse /*Cannotassignrequested /*Networkisdown#defineENETUNREACH101/*Networkisunreachable*/#defineENETRESET102/*Networkdroppedconnectionbecauseofreset*/#defineECONNABORTED103/*Softwarecausedconnectionabort*/#defineECONNRESET104/*Connectionresetbypeer#define/*Nobufferspaceavailable#define/*Transportendpointisconnected#defineENOTCONN /*Transportendpointisnotconnected*/#defineESHUTDOWN /*Cannotsendaftertransportendpointshutdown*/#defineETOOMANYREFS /*Toomanyreferences:cannotsplice*/#defineETIMEDOUT /*Connectiontimedout*/#defineECONNREFUSED /*Connectionrefused*/#defineEHOSTDOWN /*Hostisdown*/#defineEHOSTUNREACH /*Noroutetohost*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废钢运输合同范本2025年
- 矩阵合同变换
- 绿化苗木购买合同书
- 工业园物业委托管理合同
- 租赁合同简约版
- 租房合同拟定
- 学校零星维修合同
- 延安东弘启泰汽车服务有限公司员工入职合同
- 简单租房合同范本
- 工程合同价款调整有哪些方法
- 高中体育足球教案
- 2025届内蒙古赤峰市、呼和浩特市高考考前模拟物理试题含解析
- 三年级数学(上)计算题专项练习附答案
- 中等职业学校《机械制造工艺基础》课程标准
- 临床医学内科学消化系统疾病教案脂肪性肝病教案
- 2024年江苏省南通市中考英语试卷(含答案解析)
- 期末练习(试题)-2024-2025学年译林版(三起)(2024)英语三年级上册
- 成人中心静脉导管(CVC)堵塞风险评估及预防-2024团体标准
- DL∕T 5342-2018 110kV~750kV架空输电线路铁塔组立施工工艺导则
- 安全治本攻坚三年行动方案及重大事故隐患会议纪要(完整版)
- 部编版小升初语文必考点集训-文言文专练(2)(含参考译文及答案)
评论
0/150
提交评论