Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350942
  • 博文数量: 63
  • 博客积分: 1412
  • 博客等级: 中尉
  • 技术积分: 648
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 23:07
文章分类

全部博文(63)

文章存档

2012年(42)

2011年(21)

我的朋友

分类: LINUX

2011-12-20 11:12:20

转载http://blog.csdn.net/relianceslee/article/details/952861
同时请参见《unix 网络编程第二卷》

pthread_cond_wait( pthread_cond_t *cptr, pthread_mutex_t *mptr );
当mptr的值不是需要的值时,pthread_cond_wait函数等待之。

  1. 1.给条件变量发送信号的代码大体如下:

  2.     pthread_mutex_lock( &mutex );
  3.     设置条件为真
  4.         pthread_cond_signal( &cond );
  5.     pthread_mutex_unlock( &mutex );

  6. 2.测试条件并进入睡眠以等待该条件为真的代码大体如下:    

  7.     pthread_mutex_lock( &mutex );
  8.     while( 条件为假 )
  9.     {
  10.         pthread_cond_wait( &cond, &mutex );
  11.     }
  12.     修改条件
  13.     pthread_mutex_unlock( &mutex );

  14. 3.为了上锁冲突,1的代码改为如下方式

  15.     pthread_mutex_lock( &mutex );
  16.     dosignal = ( nready.nready == 0 );
  17.     nready++;
  18.     pthread_mutex_unlock( &mutex );

  19.     if( dosignal )
  20.     {
  21.         pthread_cond_signal( &cond );
  22.     }
阅读(1624) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~