当前位置: 首页 > news >正文

做网站的公司怎么发展业务环保局 网站建设

做网站的公司怎么发展业务,环保局 网站建设,网站备案是怎么回事,视频直播怎么做http://www.cnblogs.com/yuuyuu/p/5143881.html 一.概述 读写锁与互斥量的功能类似#xff0c;对临界区的共享资源进行保护#xff01;互斥量一次只让一个线程进入临界区#xff0c;读写锁比它有更高的并行性。读写锁有…http://www.cnblogs.com/yuuyuu/p/5143881.html 一.概述                                                    读写锁与互斥量的功能类似对临界区的共享资源进行保护互斥量一次只让一个线程进入临界区读写锁比它有更高的并行性。读写锁有以下特点 1.如果一个线程用读锁锁定了临界区那么其他线程也可以用读锁来进入临界区这样就可以多个线程并行操作。但这个时候如果再进行写锁加锁就会发生阻塞写锁请求阻塞后后面如果继续有读锁来请求这些后来的读锁都会被阻塞这样避免了读锁长期占用资源防止写锁饥饿 2.如果一个线程用写锁锁住了临界区那么其他线程不管是读锁还是写锁都会发生阻塞 二.函数接口                                            1.创建读写锁 1.1宏常量初始化 1 pthread_rwlock_t rwlock PTHREAD_RWLOCK_INITIALIZER; 1.2函数初始化 1 #include pthread.h 2 3 int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); rwlock读写锁的pthread_rwlock_t结构指针 attr读写锁的属性结构指针。不需要别的属性默认为NULL。 2.读写锁加锁与解锁 1 #include pthread.h 2 3 int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); 4 int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); 5 int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); rwlock创建的读写锁指针 3.其他类型的加锁 1 #include pthread.h 2 #include time.h 3 4 5 int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); 6 int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); 7 8 int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict abs_timeout); 9 int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict abs_timeout); try类函数加锁如果获取不到锁会立即返回错误EBUSY timed类函数加锁如果规定的时间内获取不到锁会返回ETIMEDOUT错误 4.销毁读写锁 1 #include pthread.h 2 3 int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); 三.简单的例子                                         创建4个线程2个线程读锁2个线程写锁观察4个线程进入临界区的顺序 1 /**2 * file pthread_rwlock.c3 */4 5 #include stdio.h6 #include stdlib.h7 #include string.h8 #include unistd.h9 #include pthread.h 10 11 /* 初始化读写锁 */ 12 pthread_rwlock_t rwlock PTHREAD_RWLOCK_INITIALIZER; 13 /* 全局资源 */ 14 int global_num 10; 15 16 void err_exit(const char *err_msg) 17 { 18 printf(error:%s\n, err_msg); 19 exit(1); 20 } 21 22 /* 读锁线程函数 */ 23 void *thread_read_lock(void *arg) 24 { 25 char *pthr_name (char *)arg; 26 27 while (1) 28 { 29 /* 读加锁 */ 30 pthread_rwlock_rdlock(rwlock); 31 32 printf(线程%s进入临界区global_num %d\n, pthr_name, global_num); 33 sleep(1); 34 printf(线程%s离开临界区...\n, pthr_name); 35 36 /* 读解锁 */ 37 pthread_rwlock_unlock(rwlock); 38 39 sleep(1); 40 } 41 42 return NULL; 43 } 44 45 /* 写锁线程函数 */ 46 void *thread_write_lock(void *arg) 47 { 48 char *pthr_name (char *)arg; 49 50 while (1) 51 { 52 /* 写加锁 */ 53 pthread_rwlock_wrlock(rwlock); 54 55 /* 写操作 */ 56 global_num; 57 printf(线程%s进入临界区global_num %d\n, pthr_name, global_num); 58 sleep(1); 59 printf(线程%s离开临界区...\n, pthr_name); 60 61 /* 写解锁 */ 62 pthread_rwlock_unlock(rwlock); 63 64 sleep(2); 65 } 66 67 return NULL; 68 } 69 70 int main(void) 71 { 72 pthread_t tid_read_1, tid_read_2, tid_write_1, tid_write_2; 73 74 /* 创建4个线程2个读2个写 */ 75 if (pthread_create(tid_read_1, NULL, thread_read_lock, read_1) ! 0) 76 err_exit(create tid_read_1); 77 78 if (pthread_create(tid_read_2, NULL, thread_read_lock, read_2) ! 0) 79 err_exit(create tid_read_2); 80 81 if (pthread_create(tid_write_1, NULL, thread_write_lock, write_1) ! 0) 82 err_exit(create tid_write_1); 83 84 if (pthread_create(tid_write_2, NULL, thread_write_lock, write_2) ! 0) 85 err_exit(create tid_write_2); 86 87 /* 随便等待一个线程防止main结束 */ 88 if (pthread_join(tid_read_1, NULL) ! 0) 89 err_exit(pthread_join()); 90 91 return 0; 92 } 2个线程函数的临界区里面都sleep(1)测试给足够的时间看其他线程能不能进来。64行写锁函数里面sleep(2)因为写锁请求会阻塞后面的读锁2个写锁一起请求会让读锁饥饿所以比39行的sleep(1)多一秒 编译运行 可以看到读锁可以一起进入临界区而写锁在临界区里面等1秒都不会有其他线程能进来
http://wiki.neutronadmin.com/news/268846/

相关文章:

  • 塘沽网站制作公司新闻类软文营销案例
  • 全网网站建设网站建设的整体流程有哪些
  • 网站开发学校有哪些北京梵客装饰公司地址电话
  • wordpress站内统计插件江西电信网站备案
  • 北京 工业网站建设公司排名哈尔滨网站seo公司
  • 上海高端网站定设计模板怎么设置
  • 网站建设英文术语网站开发工作时间
  • 不备案的网站可以做竞价吗吉林省建设信息管理平台
  • 什么叫网站外链wordpress加载完再显示图片
  • 制作手机wap网站工具蝴蝶传媒网站推广
  • 河南省城乡住房建设厅网站首页开工作室做网站怎样找资源
  • 收费网站建设视频教程免费下载阿里云建设网站好不好
  • 上海网站开发薪资晋城网站seo
  • seo建站需求网站上存储播放视频怎么做
  • 东莞志豪建设公司网站安徽六安属于南方还是北方
  • 易语言做网站登录器网站建设服务器软件
  • 广安市建设局官方网站装饰网站模板下载
  • 百度提交网站入口wordpress视频教程
  • 上海网站建站模板织梦搭建网站
  • 调查网站怎么做注册域名建设网站
  • 企业门户网站的建设与实现可以做配音兼职的网站
  • 如何把购物网站做成非经营网站网站被攻击如何处理
  • 南充做网站的公司做pc端网站渠道
  • 沈阳建设网站工程分包网
  • 建设景区网站推文龙岩搜索引擎推广
  • 集团网站建设的好处盐城市城镇化建设投资集团网站
  • 四平市住房和城乡建设局网站百度申诉网站
  • 0791网站建设研究思路 网站建设
  • 网站建设推广用兴田德润wordpress无法进入仪表盘
  • 如何建设wap网站开发公司交钥匙流程