| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/include/boost/interprocess/sync/posix/ |
Upload File : |
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztanaga 2006. 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)
//
// See http://www.boost.org/libs/interprocess for documentation.
//
//////////////////////////////////////////////////////////////////////////////
#include<boost/interprocess/exceptions.hpp>
#include <boost/interprocess/detail/posix_time_types_wrk.hpp>
namespace boost {
namespace interprocess {
inline barrier::barrier(unsigned int count)
{
if (count == 0)
throw std::invalid_argument("count cannot be zero.");
detail::barrierattr_wrapper barrier_attr;
detail::barrier_initializer barrier
(m_barrier, barrier_attr, static_cast<int>(count));
barrier.release();
}
inline barrier::~barrier()
{
int res = pthread_barrier_destroy(&m_barrier);
assert(res == 0);(void)res;
}
inline bool barrier::wait()
{
int res = pthread_barrier_wait(&m_barrier);
if (res != PTHREAD_BARRIER_SERIAL_THREAD && res != 0){
throw interprocess_exception(res);
}
return res == PTHREAD_BARRIER_SERIAL_THREAD;
}
} //namespace interprocess {
} //namespace boost {