f3a66f76e0
[SVN r86770]
57 lines
936 B
C++
57 lines
936 B
C++
// Copyright (C) 2013 Vicente Botet
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
////////////////////////////////////////////
|
|
|
|
//#define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
|
|
#include <boost/thread/thread_only.hpp>
|
|
#include <boost/thread/shared_mutex.hpp>
|
|
using namespace boost;
|
|
|
|
shared_mutex mtx;
|
|
|
|
const int max_count = 100;
|
|
void f()
|
|
{
|
|
int count =max_count;
|
|
while (count--)
|
|
{
|
|
upgrade_lock<shared_mutex> lock(mtx);
|
|
}
|
|
}
|
|
|
|
void g()
|
|
{
|
|
int count =max_count;
|
|
while (count--)
|
|
{
|
|
shared_lock<shared_mutex> lock(mtx);
|
|
}
|
|
}
|
|
|
|
void h()
|
|
{
|
|
int count =max_count;
|
|
while (count--)
|
|
{
|
|
unique_lock<shared_mutex> lock(mtx);
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
thread t0(f);
|
|
thread t1(g);
|
|
thread t2(h);
|
|
|
|
t0.join();
|
|
t1.join();
|
|
t2.join();
|
|
|
|
return 0;
|
|
}
|
|
|
|
|