Chinaunix首页 | 论坛 | 博客
  • 博客访问: 557398
  • 博文数量: 142
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1452
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 16:28
文章分类

全部博文(142)

文章存档

2016年(10)

2015年(60)

2014年(72)

我的朋友

分类: C/C++

2014-12-16 15:12:43


点击(此处)折叠或打开

  1. #include "../unipc.h"
  2. #include "pthread_rwlock.h"



  3. int my_pthread_rwlock_init(my_pthread_rwlock_t *rw, my_pthread_rwlockattr_t *attr)
  4. {
  5.     int rc = -1;

  6.     if(attr != NULL)
  7.         return EINVAL;

  8.     rc = pthread_mutex_init(&rw->rw_mutex,NULL);
  9.     if(rc != 0) {
  10.         printf("pthread_mutex_init error:%s\n",strerror(errno));
  11.         goto err1;
  12.     }

  13.     rc = pthread_cond_init(&rw->rw_condreaders,NULL);
  14.     if(rc != 0) {
  15.         printf("pthread_cond_init readers error:%s\n",strerror(errno));
  16.         goto err2;
  17.     }
  18.     
  19.     rc = pthread_cond_init(&rw->rw_condwriters,NULL);
  20.     if(rc != 0) {
  21.         printf("pthread_cond_init writers error:%s\n",strerror(errno));
  22.         goto err3;
  23.     }
  24.     
  25.     rw->rw_magic = RW_MAGIC;
  26.     rw->rw_nwaitreaders = 0;
  27.     rw->rw_nwaitwriters = 0;
  28.     rw->rw_refcount = 0;
  29.     return 0;

  30. err3:
  31.     pthread_cond_destroy(&rw->rw_condreaders);
  32. err2:
  33.     pthread_mutex_destroy(&rw->rw_mutex);
  34. err1:
  35.     return rc;

  36. }

阅读(581) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~