diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) |
commit | 0efa7c32aaf21a29b42b5926cc116007056843be (patch) | |
tree | 882f663a5dd0e65694bf6077b71086dd77fd7ff8 /3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp | |
parent | 1d20eabbc32274b491b4c2bedf73d19933d97bfd (diff) | |
download | swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.zip swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.tar.bz2 |
Moved some modules into separate git modules.
Diffstat (limited to '3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp')
m--------- | 3rdParty/Boost | 0 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp | 120 |
2 files changed, 0 insertions, 120 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp b/3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp deleted file mode 100644 index 05eb8d7..0000000 --- a/3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef BOOST_BASIC_RECURSIVE_MUTEX_WIN32_HPP -#define BOOST_BASIC_RECURSIVE_MUTEX_WIN32_HPP - -// basic_recursive_mutex.hpp -// -// (C) Copyright 2006-8 Anthony Williams -// -// 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) - -#include "thread_primitives.hpp" -#include "basic_timed_mutex.hpp" - -#include <boost/config/abi_prefix.hpp> - -namespace boost -{ - namespace detail - { - template<typename underlying_mutex_type> - struct basic_recursive_mutex_impl - { - long recursion_count; - long locking_thread_id; - underlying_mutex_type mutex; - - void initialize() - { - recursion_count=0; - locking_thread_id=0; - mutex.initialize(); - } - - void destroy() - { - mutex.destroy(); - } - - bool try_lock() - { - long const current_thread_id=win32::GetCurrentThreadId(); - return try_recursive_lock(current_thread_id) || try_basic_lock(current_thread_id); - } - - void lock() - { - long const current_thread_id=win32::GetCurrentThreadId(); - if(!try_recursive_lock(current_thread_id)) - { - mutex.lock(); - BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,current_thread_id); - recursion_count=1; - } - } - bool timed_lock(::boost::system_time const& target) - { - long const current_thread_id=win32::GetCurrentThreadId(); - return try_recursive_lock(current_thread_id) || try_timed_lock(current_thread_id,target); - } - template<typename Duration> - bool timed_lock(Duration const& timeout) - { - return timed_lock(get_system_time()+timeout); - } - - void unlock() - { - if(!--recursion_count) - { - BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,0); - mutex.unlock(); - } - } - - private: - bool try_recursive_lock(long current_thread_id) - { - if(::boost::detail::interlocked_read_acquire(&locking_thread_id)==current_thread_id) - { - ++recursion_count; - return true; - } - return false; - } - - bool try_basic_lock(long current_thread_id) - { - if(mutex.try_lock()) - { - BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,current_thread_id); - recursion_count=1; - return true; - } - return false; - } - - bool try_timed_lock(long current_thread_id,::boost::system_time const& target) - { - if(mutex.timed_lock(target)) - { - BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,current_thread_id); - recursion_count=1; - return true; - } - return false; - } - - }; - - typedef basic_recursive_mutex_impl<basic_timed_mutex> basic_recursive_mutex; - typedef basic_recursive_mutex_impl<basic_timed_mutex> basic_recursive_timed_mutex; - } -} - -#define BOOST_BASIC_RECURSIVE_MUTEX_INITIALIZER {0} - -#include <boost/config/abi_suffix.hpp> - -#endif |