一本书讲透Java线程:原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6.4 条件变量使用示例

代码清单1-20是一个条件变量使用的简单示例。该示例首先定义了一个数据减小的函数decrement,decrement在count的值没有到达5之前,会一直调用pthread_cond_wait函数,让当前线程处于阻塞状态。接着定义了数据增加函数increment,通过for循环将count的值增加到5。增加到5以后会调用pthread_cond_signal函数发送通知给decrement。decrement收到通知后会从等待中醒来,接着让数据循环相减。这样就实现了数据从0~5增加,以及从5~0减少的过程。

代码清单1-20 条件变量使用示例

在调用条件信号操作(pthread_cond_wait()、pthread_cond_signal())之前都必须调用pthread_mutex_lock进行加锁,并在调用结束后调用pthread_mutex_unlock进行解锁。