代码来自:http://stlchina.huhoo.net/twiki/bin/view.pl/Main/BoostThread
// boost_thread之条件变量
// http://stlchina.huhoo.net/twiki/bin/view.pl/Main/BoostThread
#include "stdafx.h"
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition.hpp>
#include <iostream>
const int BUF_SIZE = 10;
const int ITERS = 100;
boost::mutex io_mutex; // 供write、read函数使用
class buffer
{
public:
typedef boost::mutex::scoped_lock scoped_lock;
buffer(): p(0), c(0), full(0){}
void put(int m)
{
// 请求mutex,若mutex未被其他线程占用,则请求成功,否则,线程等待
// 请求到之后,独占mutex,别的线程不能请求到(线程等待)
// 作用范围是put函数, 作用域结束后,mutex被释放
scoped_lock lock(mutex);
if (full == BUF_SIZE)
{
{
// 使用公共资源时,先独占
// 控制台窗口只有一个,避免“同时”向控制台打印
boost::mutex::scoped_lock lock(io_mutex); // 作用范围在局部{}内
std::cout <&