- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pthread_rwlock_t表示读写锁 ? 互斥锁初始化:pthread_rwlock_init() ? 互斥锁上锁:pthread_rwlock_rdlock()、pthread_rwlock_wrlock() 互斥锁判断上锁:pthread_mutex_tryrdlock() pthread_mutex_trywrlock() ? 互斥锁解锁:pthread_rwlock_unlock() 消除互斥锁:pthread_rwlock_destroy() 读写锁适合对数据结构的读次数大于写的情况 读写锁 1、条件变量是线程可用的另一种同步机制。条件变量给多个线程提供了一个会和的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生。 2、条件本身是由互斥量保护的。线程在改变条件前必须先锁住互斥量。 pthread_mutex_lock(lock); while(workq == NULL) pthread_cond_wait(cond, lock); /*… 操作workq…*/ pthread_mutex_unlock(lock); pthread_cond_wait在把调用线程放到等待条件的线程列表上后,对mutex解锁。 条件变量 有两个函数用于通知线程条件已满足。 pthread _cond_signal(pthread_cond_t *cond); 唤醒等待的某个线程 pthread_cond_broadcast(pthread_cond_t *cond); 唤醒等待的所有线程 pthread_mutex_lock(lock); workp = mp; pthread_mutex_unlock(lock); pthread_cond_signal(cond); 通常是在条件改变状态后再向线程发送信号 条件变量 pthread_cond_init pthread_cond_destory pthread_cond_wait pthread_cond_timedwait pthread_cond_signal pthread_cond_broadcast 发送信号以释放被阻塞在条件变量cond上的一个线程。多个线程阻塞在此条件变量上时,哪一个线程被唤醒是由线程的调度策略所决定的。 要注意的是,必须用保护条件变量的互斥锁来保护这个函数,否则条件满足信号又可能在测试条件和调用pthread_cond_wait函数之间被发出,从而造成无限制的等待。 条件变量 POSIX定义了很多设计操作系统实现限制的常量,如何找到特定系统实际支持的限制值呢? long sysconf(int name); //获得运行时确定的限制值 long pathconf(const char *pathname, int name); long fpathconf(int filedes, int name); //限制值与文件和目录相关联,是可以改变的限制值 通常sysconf使用的name参数以 _SC_开头 pathconf、fpathconf使用的name参数以 _PC_开头 线程限制 对于线程同样也有限制,这些限制可以通过sysconf函数查询。 1、进程可以创建的最大线程数 2、线程退出时操作系统销毁私有数据时最大尝试次数 3、进程可以创建的键的最大数目 4、一个线程的栈可用的最小字节数 等…… 线程限制 pthread_attr_t 线程属性结构是不透明的,应用程序并不需要了解有关属性对象内部的任何细节,因而可以增强应用程序的可移植性。 1、线程的分离状态 int pthread_attr_getdetachstate(const pthread_attr_t *restarict attr, int *detachstate); 默认是PTHREAD_CREATE_JOINABLE 2、线程栈末尾的警戒缓冲区大小 pthread_attr_getguardsize 3、线程栈的最低地址 pthread_attr_getstack 4、线程栈的大小(字节数) pthread_attr_getguardsize 线程属性 还有一些线程属性没有用pthread_attr_t表示 1、可取消状态 2、可取消类型 3、并发度 并发度控制着用户级线程可以映射的内核线程或进程的数目,如果操作系统的实现在内核级的线程和用户级的线程之间保持一对一,则改变并发度没有效果;并发度只是给系统一个提示,系统并不保证请求的并发度一定会被采用 这些属性可以通过其他函数来获取和设置 线程属性 取消选项--- 可取消状态 int pthread_setcancelstate(int state, in
原创力文档


文档评论(0)