summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp')
m---------3rdParty/Boost0
-rw-r--r--3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp120
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