Boost logo

Boost-Commit :

From: matt_calabrese_at_[hidden]
Date: 2007-07-11 21:02:27


Author: matt_calabrese
Date: 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
New Revision: 7409
URL: http://svn.boost.org/trac/boost/changeset/7409

Log:
Updated docs to include cages, added some tests.

Added:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/flag.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/
      - copied from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp
      - copied, changed from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/detail/
      - copied from r7408, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/detail/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence.hpp
      - copied unchanged from r7408, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp
      - copied, changed from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_barrier_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_semantic_type.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_compiler_cage.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acq_rel.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_unordered.cpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/interlocked_integer_types.hpp
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/multiply_assign/
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/multiply_assign/multiply_assign.cpp
Removed:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/compiler_fence_support.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/fence_support.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_load.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_load_fwd.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_store.hpp
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/fence_store_fwd.hpp
Properties modified:
   sandbox/SOC/2006/concurrency/trunk/libs/act/ (props changed)
Text files modified:
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp | 2
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp | 3
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp | 1
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp | 13
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp | 13
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default | 27 +++
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default | 2
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp | 20 ++
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp | 20 ++
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp | 14 +
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp | 18 ++
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp | 14 +
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp | 18 ++
   sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default | 42 +++++
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk | 10 +
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest | 6
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html | 10
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html | 40 +++++
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html | 12 +
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html | 16 +-
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html | 37 ++---
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html | 16 +-
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html | 281 ++++-----------------------------------
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html | 41 ++---
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html | 6
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html | 46 +++---
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html | 18 +-
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html | 24 +-
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html | 10
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html | 6
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html | 44 +++++
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk | 2
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk | 2
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk | 11
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk | 99 ++-----------
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk | 20 +-
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk | 14
   sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk | 10
   sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2 | 4
   39 files changed, 488 insertions(+), 504 deletions(-)

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/binary_bitwise_operation_checker.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -64,7 +64,7 @@
                                    , OperationType operation
                                    )
 {
- typedef boost::act::interlocked::uint_least8_t uint_least8_t;
+ typedef boost::act::interlocked::uint_least8_t uint_least8_t;
 
   uint_least8_t test_var = 0;
 

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/cas_support.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -108,7 +108,8 @@
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_release 3
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_write 3
 #define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_acq_rel 4
-#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_none 5
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_sequential 5
+#define BOOST_ACT_INTERLOCKED_DETAIL_SEMANTIC_ID_none 6
 
 #define BOOST_ACT_INTERLOCKED_DETAIL_COMPARE( data, elem ) \
 BOOST_PP_EQUAL \

Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/compiler_fence_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/compiler_fence_support.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
+++ (empty file)
@@ -1,33 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006, 2007 Matthew Calabrese
-
- Use, modification and distribution is subject to 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)
-==============================================================================*/
-
-#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_COMPILER_FENCE_SUPP_HPP
-#define BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_COMPILER_FENCE_SUPP_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_WINDOWS
-
- #if WINVER >= 0x0600 // Windows Vista
-
- // Note: Same name as vista windows on purpose
- #define BOOST_ACT_INTERLOCKED_DETAIL_COMPILER_FENCE_SUPPORT \
- ( vista, ( acq_rel )( load_fence )( store_fence ) )
-
- #endif // End WINVER checks
-
-#elif defined( __GNUC__ ) // if gcc
-
- #define BOOST_ACT_INTERLOCKED_DETAIL_COMPILER_FENCE_SUPPORT \
- ( gcc, ( acq_rel ) )
-
-#endif
-
-// Note: If no support is detected, the implementation automatically uses fences
-
-#endif

Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/fence_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/fence_support.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2006, 2007 Matthew Calabrese
-
- Use, modification and distribution is subject to 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)
-==============================================================================*/
-
-#ifndef BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_FENCE_SUPPORT_HPP
-#define BOOST_ACT_INTERLOCKED_DETAIL_IMPLEMENTATION_INFO_FENCE_SUPPORT_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_WINDOWS
-
- #if WINVER >= 0x0600 // Windows Vista
-
- // Note: Same name as vista windows on purpose
- #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT \
- ( vista, ( acq_rel )( load_fence )( store_fence ) )
-
- #else
-
- // ToDo: Add support (SSE sfence, SSE2 lfence, mfence)
-
- #endif // End WINVER checks
-
-#elif defined( __GNUC__ ) // if gcc
-
- // ToDo: Add support (SSE sfence, SSE2 lfence, mfence)
-
-#elif defined( _OPENMP ) // Else, resort to OpenMP (full fence only, via flush)
-
- #define BOOST_ACT_INTERLOCKED_DETAIL_FENCE_SUPPORT \
- ( openmp, ( acq_rel ) )
-
-#endif
-
-#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/detail/implementation_info/operation_support.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -149,6 +149,7 @@
 /*
     The following are useful macros to use later on after detection.
 */
+
 #define BOOST_ACT_INTERLOCKED_DETAIL_ITANIUM_RW_ORDERING_SUPPORT \
         ( acq_rel )( acquire )( release )( unordered )
 

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -6,12 +6,13 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
-#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_HPP
+#define BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_HPP
 
-#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acquire.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_release.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acq_rel.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_unordered.hpp>
 
 #endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/divide_assign_fwd.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -6,12 +6,13 @@
     http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
-#define BOOST_ACT_INTERLOCKED_SUBTRACT_ASSIGN_FWD_HPP
+#ifndef BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_DIVIDE_ASSIGN_FWD_HPP
 
-#include <boost/act/interlocked/subtract_assign/subtract_assign_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_acquire_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_release_fwd.hpp>
-#include <boost/act/interlocked/subtract_assign/subtract_assign_result_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acquire_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_release_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/divide_assign/divide_assign_unordered_fwd.hpp>
 
 #endif

Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp
==============================================================================

Deleted: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/flag.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,67 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_FLAG_HPP
+#define BOOST_ACT_INTERLOCKED_FLAG_HPP
+
+#include <boost/act/config/interlocked/has.hpp>
+
+// Too: Don't rely on bool when direct support is available (or bool isn't).
+
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_volatile.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/act/interlocked/assign_if_was.hpp>
+#include <boost/act/interlocked/type_traits/is_semantics.hpp>
+
+namespace boost { namespace act { namespace interlocked {
+
+typedef bool_least_t flag_least_t;
+typedef bool_fast_t flag_fast_t;
+
+// Note: Returns old value
+template< typename Semantics, typename Type >
+typename lazy_enable_if
+<
+ mpl::and_
+ <
+ is_semantics< Semantics >
+ , mpl::or_< is_same< typename remove_volatile< Type >::type, flag_least_t >
+ , is_same< typename remove_volatile< Type >::type, flag_fast_t >
+ >
+ >
+, remove_volatile< Type >
+>
+set_if_was_clear( Type& target )
+{
+ return assign_if_was< Semantics >( target, true, false );
+}
+
+template< typename Semantics, typename Type >
+typename lazy_enable_if
+<
+ mpl::and_
+ <
+ is_semantics< Semantics >
+ , mpl::or_< is_same< typename remove_volatile< Type >::type, flag_least_t >
+ , is_same< typename remove_volatile< Type >::type, flag_fast_t >
+ >
+ >
+, void
+>
+clear( Type& target )
+{
+ assign_if_was< Semantics >( target, false, true );
+}
+
+} } }
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_acquire_default 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -31,6 +31,31 @@
 
 #else // Else: Custom interlocked load for this system (no default)
 
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( assign_if_was, acquire )
+
+#include <boost/act/interlocked/assign_if_was/assign_if_was_acquire.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+// ToDo: Change to default to load sequential if it exists
+struct load_acquire_default_impl
+{
+ template< typename TargetType >
+ static typename remove_cv< TargetType >::type execute( TargetType& target )
+ {
+ TargetType dummy_value;
+
+ return assign_if_was< acquire >( target, dummy_value, dummy_value );
+ }
+};
+
+} } } }
+
+#else
+
 #include <boost/type_traits/remove_cv.hpp>
 
 #include <boost/mpl/assert.hpp>
@@ -59,3 +84,5 @@
 #endif
 
 #endif
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/load/detail/load_unordered_default 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -31,6 +31,8 @@
 
 #else // Else: Custom interlocked load for this system (no default)
 
+// ToDo: Change to default to assign_if_was if no custom load< acquire >
+
 #include <boost/act/interlocked/load/load_acquire.hpp>
 #include <boost/type_traits/remove_cv.hpp>
 

Copied: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp (from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp)
==============================================================================
--- /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,20 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_FENCE_HPP
+#define BOOST_ACT_INTERLOCKED_FENCE_HPP
+
+#include <boost/act/interlocked/fence/fence.hpp>
+#include <boost/act/interlocked/fence/fence_thread_unsafe.hpp>
+#include <boost/act/interlocked/fence/fence_unordered.hpp>
+#include <boost/act/interlocked/fence/fence_acquire.hpp>
+#include <boost/act/interlocked/fence/fence_release.hpp>
+#include <boost/act/interlocked/fence/fence_acq_rel.hpp>
+#include <boost/act/interlocked/fence/fence_sequential.hpp>
+
+#endif

Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_fwd.hpp
==============================================================================

Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_load.hpp
==============================================================================

Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_load_fwd.hpp
==============================================================================

Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_store.hpp
==============================================================================

Deleted: /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence/fence_store_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acq_rel_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_acquire_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_release_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_sequential_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_thread_unsafe_fwd.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered.hpp
==============================================================================

Added: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence/memory_fence_unordered_fwd.hpp
==============================================================================

Copied: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp (from r7353, /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp)
==============================================================================
--- /sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/fence_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/memory_fence_fwd.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,20 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_FENCE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_FENCE_FWD_HPP
+
+#include <boost/act/interlocked/fence/fence_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_thread_unsafe_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_unordered_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_acquire_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_release_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_acq_rel_fwd.hpp>
+#include <boost/act/interlocked/fence/fence_sequential_fwd.hpp>
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_HPP
+
+#include <boost/act/interlocked/semantics/sequential_fwd.hpp>
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/sequential_fwd.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_SEQUENTIAL_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+struct sequential {};
+
+} } }
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_HPP
+
+#include <boost/act/interlocked/semantics/thread_unsafe_fwd.hpp>
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/semantics/thread_unsafe_fwd.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_FWD_HPP
+#define BOOST_ACT_INTERLOCKED_SEMANTICS_THREAD_UNSAFE_FWD_HPP
+
+namespace boost { namespace act { namespace interlocked {
+
+struct thread_unsafe {};
+
+} } }
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default (original)
+++ sandbox/SOC/2006/concurrency/trunk/boost/act/interlocked/store/detail/store_release_default 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -32,6 +32,46 @@
 
 #else // Else: Custom interlocked store for this system (no default)
 
+#include <boost/act/config/interlocked/has.hpp>
+
+#if BOOST_ACT_INTERLOCKED_HAS( modify, release )
+
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost { namespace act { namespace interlocked { namespace detail {
+
+template< typename SourceType >
+class store_release_default_fun
+{
+public:
+ explicit store_release_default_fun( SourceType& source_init )
+ : source_m( source_init ) {}
+public:
+ template< typename TargetType >
+ typename remove_cv< TargetType >::type operator ()( TargetType& ) const
+ {
+ return static_cast< typename remove_cv< TargetType >::type >( source_m );
+ }
+private:
+ SourceType& source_m;
+};
+
+struct store_release_default_impl
+{
+ template< typename TargetType, typename SourceType >
+ static typename remove_cv< TargetType >::type
+ execute( TargetType& target, SourceType& source )
+ {
+ return modify< release >( target
+ , store_release_default_fun< SourceType >( source )
+ );
+ }
+};
+
+} } } }
+
+#else
+
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/always.hpp>
 #include <boost/mpl/apply.hpp>
@@ -58,3 +98,5 @@
 #endif
 
 #endif
+
+#endif

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/act.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -27,10 +27,18 @@
 [def __pc_queue__ [link boost_act.concepts.queue_concepts.pc_queue [concept PC Queue]]]
 [def __interlocked_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_type [concept Interlocked Type]]]
 [def __interlocked_natural_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_natural_type [concept Interlocked Natural Type]]]
+[def __interlocked_cage__ [link boost_act.interlocked.interlocked_concepts.interlocked_cage [concept Interlocked Cage]]]
+[def __interlocked_cages__ [link boost_act.interlocked.interlocked_concepts.interlocked_cage [concept Interlocked Cages]]]
 [def __interlocked_operation__ [link boost_act.interlocked.interlocked_concepts.interlocked_operation [concept Interlocked Operation]]]
-[def __semantic_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type [concept Semantic Type]]]
+[def __interlocked_operations__ [link boost_act.interlocked.interlocked_concepts.interlocked_operation [concept Interlocked Operations]]]
+[def __interlocked_semantic_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_semantic_type [concept Interlocked Semantic Type]]]
+[def __interlocked_semantic_types__ [link boost_act.interlocked.interlocked_concepts.interlocked_semantic_type [concept Interlocked Semantic Types]]]
+[def __interlocked_semantic_models__ [link boost_act.interlocked.interlocked_semantic_models [concept Interlocked Semantic Models]]]
+[def __interlocked_cage_models__ [link boost_act.interlocked.interlocked_cage_models [concept Interlocked Cage Models]]]
 [def __interlocked_arithmetic_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type [concept Interlocked Arithmetic Type]]]
 [def __interlocked_integer_type__ [link boost_act.interlocked.interlocked_concepts.interlocked_integer_type [concept Interlocked Integer Type]]]
+[def __interlocked_memory_cage__ [link boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage [concept Interlocked Memory Cage]]]
+[def __interlocked_compiler_cage__ [link boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage [concept Interlocked Compiler Cage]]]
 [def __worker_policy__ [link boost_act.concepts.worker_policy [concept Worker Policy]]]
 [def __worker__ [link boost_act.concepts.worker [concept Worker]]]
 [def __threaded_worker_policy__ [link boost_act.concepts.threaded_worker_policy [concept Threaded Worker Policy]]]

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/HTML.manifest 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -6,10 +6,16 @@
 boost_act/interlocked.html
 boost_act/interlocked/interlocked_concepts.html
 boost_act/interlocked/interlocked_concepts/interlocked_operation.html
+boost_act/interlocked/interlocked_concepts/interlocked_cage.html
+boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html
 boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html
+boost_act/interlocked/interlocked_semantic_models.html
+boost_act/interlocked/interlocked_cage_models.html
+boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html
+boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html
 boost_act/interlocked/interlocked_integer_models.html
 boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
 boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/compiler_setup.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -88,7 +88,7 @@
               </div>
             </div>
             <a id="boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005"></a>
- <h4><a id="id390172"></a>
+ <h4><a id="id390176"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005">Activating
       OpenMP Support in Visual C++ 2005</a>
     </h4>
@@ -139,7 +139,7 @@
               </div>
             </div>
             <div class="table">
- <a id="id390240"></a>
+ <a id="id390247"></a>
               <p class="title">
                 <b>Table 1. OpenMP Extension Support</b>
               </p>
@@ -301,7 +301,7 @@
             <p>
     </p>
             <a id="boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005"></a>
- <h4><a id="id388485"></a>
+ <h4><a id="id388496"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.activating_openmp_support_in_visual_c___2005">Activating
       OpenMP Support in Visual C++ 2005</a>
     </h4>
@@ -315,7 +315,7 @@
       get a linker error upon build.
     </p>
             <a id="boost_act.compiler_setup.linking_with_boost_threads"></a>
- <h4><a id="id388545"></a>
+ <h4><a id="id388556"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.linking_with_boost_threads">Linking
       with Boost.Threads</a>
     </h4>
@@ -326,7 +326,7 @@
       and Install</a>.
     </p>
             <a id="boost_act.compiler_setup.compiling_the_library"></a>
- <h4><a id="id388598"></a>
+ <h4><a id="id388610"></a>
       <a href="compiler_setup.html#boost_act.compiler_setup.compiling_the_library">Compiling the
       Library</a>
     </h4>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -110,6 +110,18 @@
                         </dt>
                         <dt>
                           <span class="section">
+ <a href="interlocked/interlocked_concepts/interlocked_cage.html">Interlocked
+ Cage</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="interlocked/interlocked_concepts/interlocked_semantic_type.html">Interlocked
+ Semantic Type</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
                             <a href="interlocked/interlocked_concepts/interlocked_type.html">Interlocked
         Type</a>
                           </span>
@@ -136,6 +148,34 @@
                     </dd>
                     <dt>
                       <span class="section">
+ <a href="interlocked/interlocked_semantic_models.html">Interlocked
+ Semantic Models</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="interlocked/interlocked_cage_models.html">Interlocked
+ Cage Models</a>
+ </span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section">
+ <a href="interlocked/interlocked_cage_models/interlocked_memory_cage.html">Interlocked
+ Memory Cage</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="interlocked/interlocked_cage_models/interlocked_compiler_cage.html">Interlocked
+ Compiler Cage</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section">
                         <a href="interlocked/interlocked_integer_models.html">Interlocked
       Integer Models</a>
                       </span>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_barrier_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_barrier_models.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Barrier Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_semantic_models.html" title="Interlocked Semantic Models" /><link rel="next" href="interlocked_barrier_models/interlocked_fence.html" title="Interlocked Fence" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../doc/style/html/syntax.xml',
+ '../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../doc/chapters.xml',
+ '../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../sections.xml',
+ '../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_semantic_models.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_barrier_models/interlocked_fence.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="boost_act.interlocked.interlocked_barrier_models"></a><a href="interlocked_barrier_models.html" title="Interlocked Barrier Models">Interlocked
+ Barrier Models</a></h3>
+ </div>
+ </div>
+ </div>
+ <div class="toc">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <dl>
+ <dt>
+ <span class="section">
+ <a href="interlocked_barrier_models/interlocked_fence.html">Interlocked
+ Fence</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="interlocked_barrier_models/interlocked_compiler_fence.html">Interlocked
+ Compiler Fence</a>
+ </span>
+ </dt>
+ </dl>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_semantic_models.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_barrier_models/interlocked_fence.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Cage Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_semantic_models.html" title="Interlocked Semantic Models" /><link rel="next" href="interlocked_cage_models/interlocked_memory_cage.html" title="Interlocked Memory Cage" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../doc/style/html/syntax.xml',
+ '../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../doc/chapters.xml',
+ '../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../sections.xml',
+ '../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_semantic_models.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_cage_models/interlocked_memory_cage.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="boost_act.interlocked.interlocked_cage_models"></a><a href="interlocked_cage_models.html" title="Interlocked Cage Models">Interlocked
+ Cage Models</a></h3>
+ </div>
+ </div>
+ </div>
+ <div class="toc">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <dl>
+ <dt>
+ <span class="section">
+ <a href="interlocked_cage_models/interlocked_memory_cage.html">Interlocked
+ Memory Cage</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="interlocked_cage_models/interlocked_compiler_cage.html">Interlocked
+ Compiler Cage</a>
+ </span>
+ </dt>
+ </dl>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_semantic_models.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_cage_models/interlocked_memory_cage.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Compiler Cage</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_cage_models.html" title="Interlocked Cage Models" /><link rel="prev" href="interlocked_memory_cage.html" title="Interlocked Memory Cage" /><link rel="next" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../../doc/style/html/syntax.xml',
+ '../../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../../doc/chapters.xml',
+ '../../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../../sections.xml',
+ '../../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_memory_cage.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_cage_models.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="../interlocked_integer_models.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h4 class="title"><a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage"></a><a href="interlocked_compiler_cage.html" title="Interlocked Compiler Cage">Interlocked
+ Compiler Cage</a></h4>
+ </div>
+ </div>
+ </div>
+ <div class="important">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <div class="admonition-graphic">
+ <div class="admonition-icon">
+ <div class="important-icon"></div>
+ </div>
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Important</div>
+ <div class="admonition-content">
+ <p>
+ </p>
+ <p>
+ The features described on this page are not yet implemented.
+ </p>
+ <p>
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.description"></a>
+ <h6><a id="id467284"></a>
+ Description
+ </h6>
+ <p>
+ An <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+ <code class="literal">Interlocked Cage</code></a> whose instantiations and semantics
+ apply to compiler reordering of operations only. Order of visibility of
+ operations with respect to other threads of execution is not specified.
+ </p>
+ <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.model_of"></a>
+ <h6><a id="id467335"></a>
+ <a href="interlocked_compiler_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.model_of">Model
+ of</a>
+ </h6>
+ <div class="itemizedlist">
+ <ul>
+ <li>
+ <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+ <code class="literal">Interlocked Cage</code></a>
+ </li>
+ </ul>
+ </div>
+ <a id="boost_act.interlocked.interlocked_cage_models.interlocked_compiler_cage.example"></a>
+ <h6><a id="id467387"></a>
+ Example
+ </h6>
+ <p>
+ ToDo: Insert example here
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_memory_cage.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_cage_models.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="../interlocked_integer_models.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Memory Cage</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_cage_models.html" title="Interlocked Cage Models" /><link rel="prev" href="../interlocked_cage_models.html" title="Interlocked Cage Models" /><link rel="next" href="interlocked_compiler_cage.html" title="Interlocked Compiler Cage" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../../doc/style/html/syntax.xml',
+ '../../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../../doc/chapters.xml',
+ '../../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../../sections.xml',
+ '../../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="../interlocked_cage_models.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_cage_models.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_compiler_cage.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h4 class="title"><a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage"></a><a href="interlocked_memory_cage.html" title="Interlocked Memory Cage">Interlocked
+ Memory Cage</a></h4>
+ </div>
+ </div>
+ </div>
+ <div class="important">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <div class="admonition-graphic">
+ <div class="admonition-icon">
+ <div class="important-icon"></div>
+ </div>
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Important</div>
+ <div class="admonition-content">
+ <p>
+ </p>
+ <p>
+ The features described on this page are not yet implemented.
+ </p>
+ <p>
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.description"></a>
+ <h6><a id="id466283"></a>
+ Description
+ </h6>
+ <p>
+ An <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+ <code class="literal">Interlocked Cage</code></a> whose instantiations and semantics
+ apply to both compiler reordering of operations as well as order of visibility
+ of operations with respect to other threads of execution. Internally,
+ <code class="literal">Interlocked Memory Cages</code> often imply low-level memory
+ and compiler barriers during construction and/or destruction and therefore
+ should be used sparingly. When given the option, one should always prefer
+ to directly apply semantics to their operation rather than use a cage.
+ One common use would be to implement a user-defined interlocked operation
+ with strict ordering requirements when the target system does not provide
+ direct support for such semantics for that particular operation.
+ </p>
+ <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.model_of"></a>
+ <h6><a id="id466351"></a>
+ <a href="interlocked_memory_cage.html#boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.model_of">Model
+ of</a>
+ </h6>
+ <div class="itemizedlist">
+ <ul>
+ <li>
+ <a href="../interlocked_concepts/interlocked_cage.html" title="Interlocked Cage">
+ <code class="literal">Interlocked Cage</code></a>
+ </li>
+ </ul>
+ </div>
+ <a id="boost_act.interlocked.interlocked_cage_models.interlocked_memory_cage.example"></a>
+ <h6><a id="id466401"></a>
+ Example
+ </h6>
+ <p>
+ ToDo: Incorporate this into tests
+ </p>
+ <div class="programlisting">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <div class="style-switcher-box" id="id466427">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+ 'id466427',
+ '../../../../../doc/style/html/syntax.xml',
+ '../../../../../doc/style/html'
+ );
+ //--></script>
+</div>
+ <pre>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">memory_cage</span><span class="special">/</span><span class="identifier">memory_cage_sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">memory_cage</span><span class="special">/</span><span class="identifier">memory_cage_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">add_assign</span><span class="special">/</span><span class="identifier">add_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">add_assign</span><span class="special">/</span><span class="identifier">add_assign_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">integer</span><span class="special">/</span><span class="identifier">types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">act</span><span class="special">::</span><span class="identifier">interlocked</span><span class="special">;</span>
+
+ <span class="identifier">int_fast32_t</span> <span class="identifier">var</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+
+ <span class="comment">/* ... */</span>
+
+ <span class="comment">// The following block turns the contained unordered add_assign into an
+</span> <span class="comment">// add_assign operation with sequential semantics.
+</span> <span class="special">{</span>
+ <span class="identifier">memory_cage</span><span class="special">&lt;</span> <span class="identifier">sequential</span> <span class="special">&gt;</span> <span class="identifier">cage</span><span class="special">;</span>
+
+ <span class="identifier">add_assign</span><span class="special">&lt;</span> <span class="identifier">unordered</span> <span class="special">&gt;(</span> <span class="identifier">var</span><span class="special">,</span> <span class="number">4</span> <span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="comment">/* ... */</span>
+
+ <span class="comment">// The following block turns the contained acquire add_assign into an
+</span> <span class="comment">// add_assign operation with acq_rel semantics. The second template
+</span> <span class="comment">// argument to fence along with the first effectively makes the type
+</span> <span class="comment">// a fence with just release semantics. Since add_assign already
+</span> <span class="comment">// specifies acquire semantics, the resulting operation correctly has
+</span> <span class="comment">// acq_rel semantics without any potential redundant memory barriers.
+</span> <span class="comment">// Leaving the second argument out would also work, but may generate
+</span> <span class="comment">// less efficient code.
+</span> <span class="special">{</span>
+ <span class="identifier">memory_cage</span><span class="special">&lt;</span> <span class="identifier">acq_rel</span><span class="special">,</span> <span class="identifier">acquire</span> <span class="special">&gt;</span> <span class="identifier">cage</span><span class="special">;</span>
+
+ <span class="identifier">add_assign</span><span class="special">&lt;</span> <span class="identifier">acquire</span> <span class="special">&gt;(</span> <span class="identifier">var</span><span class="special">,</span> <span class="number">4</span> <span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="comment">// An add_assign operation with unordered semantics.
+</span> <span class="identifier">add_assign</span><span class="special">&lt;</span> <span class="identifier">unordered</span> <span class="special">&gt;(</span> <span class="identifier">var</span><span class="special">,</span> <span class="number">4</span> <span class="special">);</span>
+<span class="special">}</span>
+</pre>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="../interlocked_cage_models.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_cage_models.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_compiler_cage.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -103,6 +103,18 @@
                     </dt>
                     <dt>
                       <span class="section">
+ <a href="interlocked_concepts/interlocked_cage.html">Interlocked
+ Cage</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="interlocked_concepts/interlocked_semantic_type.html">Interlocked
+ Semantic Type</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
                         <a href="interlocked_concepts/interlocked_type.html">Interlocked
         Type</a>
                       </span>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_arithmetic_type.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description"></a>
- <h6><a id="id460718"></a>
+ <h6><a id="id460794"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.description">Description</a>
         </h6>
             <p>
@@ -145,7 +145,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.refinement_of"></a>
- <h6><a id="id460928"></a>
+ <h6><a id="id461004"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -154,7 +154,7 @@
           <code class="literal">Interlocked Natural Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.expression_requirements"></a>
- <h6><a id="id460977"></a>
+ <h6><a id="id461053"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -206,7 +206,7 @@
               </div>
             </div>
             <div class="table">
- <a id="id461193"></a>
+ <a id="id461268"></a>
               <p class="title">
                 <b>Table 6. Interlocked Arithmetic Type Requirements</b>
               </p>
@@ -339,7 +339,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.headers"></a>
- <h6><a id="id461807"></a>
+ <h6><a id="id461882"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.headers">Headers</a>
         </h6>
             <p>
@@ -351,10 +351,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id461828">
+ <div class="style-switcher-box" id="id461904">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id461828',
+ 'id461904',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -400,7 +400,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example"></a>
- <h6><a id="id462710"></a>
+ <h6><a id="id462785"></a>
           <a href="interlocked_arithmetic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_arithmetic_type.example">Example</a>
         </h6>
             <p>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_cage.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Cage</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_operation.html" title="Interlocked Operation" /><link rel="next" href="interlocked_semantic_type.html" title="Interlocked Semantic Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../../doc/style/html/syntax.xml',
+ '../../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../../doc/chapters.xml',
+ '../../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../../sections.xml',
+ '../../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_operation.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_concepts.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_semantic_type.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h4 class="title"><a id="boost_act.interlocked.interlocked_concepts.interlocked_cage"></a><a href="interlocked_cage.html" title="Interlocked Cage">Interlocked
+ Cage</a></h4>
+ </div>
+ </div>
+ </div>
+ <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.description"></a>
+ <h6><a id="id456351"></a>
+ Description
+ </h6>
+ <p>
+ An <code class="literal">Interlocked Cage</code> is a template whose instantiations
+ are types which manage the order of visibility of read and write operations
+ that occur during their objects' lifetime, effectively providing those
+ operations with potentially more restrictive ordering constraints. Semantics
+ for such cages may be specified by the programmer at compile-time via explicit
+ template arguments.
+ </p>
+ <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.concept_of"></a>
+ <h6><a id="id456396"></a>
+ <a href="interlocked_cage.html#boost_act.interlocked.interlocked_concepts.interlocked_cage.concept_of">Concept
+ of</a>
+ </h6>
+ <div class="itemizedlist">
+ <ul>
+ <li>
+ <a href="../interlocked_cage_models/interlocked_memory_cage.html" title="Interlocked Memory Cage">
+ <code class="literal">Interlocked Memory Cage</code></a>
+ </li>
+ <li>
+ <a href="../interlocked_cage_models/interlocked_compiler_cage.html" title="Interlocked Compiler Cage">
+ <code class="literal">Interlocked Compiler Cage</code></a>
+ </li>
+ </ul>
+ </div>
+ <div class="variablelist">
+ <p class="title">
+ <b>Notation</b>
+ </p>
+ <dl>
+ <dt>
+ <span class="term">
+ <em class="replaceable"><code>
+ name
+ </code></em>
+ </span>
+ </dt>
+ <dd>
+ An <code class="literal">Interlocked Cage</code>.
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="computeroutput">
+ <span class="identifier">S1</span>
+ </code>
+ </span>
+ </dt>
+ <dd>
+ An <a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">
+ <code class="literal">Interlocked Semantic Type</code></a>.
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="computeroutput">
+ <span class="identifier">S2</span>
+ </code>
+ </span>
+ </dt>
+ <dd>
+ An <a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">
+ <code class="literal">Interlocked Semantic Type</code></a>.
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="computeroutput">
+ <span class="identifier">B</span>
+ </code>
+ </span>
+ </dt>
+ <dd>
+ A type which is an instantiation of <code class="computeroutput"><span class="identifier">name</span></code>
+ with or without additional <span class="emphasis"><em>cv-qualification</em></span>.
+ </dd>
+ <dt>
+ <span class="term">
+ <code class="computeroutput">
+ <span class="identifier">b</span>
+ </code>
+ </span>
+ </dt>
+ <dd>
+ An object of type <code class="computeroutput"><span class="identifier">B</span><span class="special">&amp;</span></code>.
+ </dd>
+ </dl>
+ </div>
+ <a id="boost_act.interlocked.interlocked_concepts.interlocked_cage.expression_requirements"></a>
+ <h6><a id="id456633"></a>
+ <a href="interlocked_cage.html#boost_act.interlocked.interlocked_concepts.interlocked_cage.expression_requirements">Expression
+ Requirements</a>
+ </h6>
+ <div class="table">
+ <a id="id456651"></a>
+ <p class="title">
+ <b>Table 3. Interlocked Operation Requirements</b>
+ </p>
+ <div class="table-contents">
+ <table class="table" summary="Interlocked Operation Requirements">
+ <colgroup>
+ <col />
+ <col />
+ </colgroup>
+ <thead>
+ <tr>
+ <th>
+ <p>
+ Expression
+ </p>
+ </th>
+ <th>
+ <p>
+ Pre/Post-Condition
+ </p>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">name</span><span class="special">&lt;&gt;()</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Instantiates a cage with the default semantics (<code class="computeroutput"><span class="identifier">sequential</span></code>).
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">name</span><span class="special">&lt;</span><span class="identifier">S1</span><span class="special">&gt;()</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Instantiates a cage with the specified semantics.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">name</span><span class="special">&lt;</span><span class="identifier">S1</span><span class="special">,</span><span class="identifier">S2</span><span class="special">&gt;()</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Instantiates a cage with the semantic requirements of <code class="computeroutput"><span class="identifier">S1</span></code> which are not already specified
+ by <code class="computeroutput"><span class="identifier">S2</span></code>.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">b</span><span class="special">.~</span><span class="identifier">B</span><span class="special">()</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Destroys the cage <code class="computeroutput"><span class="identifier">b</span></code>.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break" />
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_operation.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_concepts.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_semantic_type.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_integer_type.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
- <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_arithmetic_type.html" title="Interlocked Arithmetic Type" /><link rel="next" href="../interlocked_integer_models.html" title="Interlocked Integer Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_arithmetic_type.html" title="Interlocked Arithmetic Type" /><link rel="next" href="../interlocked_semantic_models.html" title="Interlocked Semantic Models" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
- <a accesskey="n" href="../interlocked_integer_models.html">
+ <a accesskey="n" href="../interlocked_semantic_models.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description"></a>
- <h6><a id="id462765"></a>
+ <h6><a id="id462840"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.description">Description</a>
         </h6>
             <p>
@@ -145,7 +145,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.refinement_of"></a>
- <h6><a id="id462985"></a>
+ <h6><a id="id463060"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -154,7 +154,7 @@
           <code class="literal">Interlocked Arithmetic Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.expression_requirements"></a>
- <h6><a id="id463033"></a>
+ <h6><a id="id463108"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -206,7 +206,7 @@
               </div>
             </div>
             <div class="table">
- <a id="id463250"></a>
+ <a id="id463325"></a>
               <p class="title">
                 <b>Table 7. Interlocked Integer Type Requirements</b>
               </p>
@@ -341,22 +341,19 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers"></a>
- <h6><a id="id463889"></a>
+ <h6><a id="id463964"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.headers">Headers</a>
         </h6>
- <p>
-
-</p>
             <div class="programlisting">
               <div class="box-outer-wrapper">
                 <div class="box-top-left"></div>
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id463910">
+ <div class="style-switcher-box" id="id463983">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id463910',
+ 'id463983',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -372,10 +369,12 @@
 <span class="comment">// bitand_assign headers.
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_thread_unsafe</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign</span><span class="special">/</span><span class="identifier">bitand_assign_sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
 <span class="comment">// Forward declarations.
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitand_assign_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -386,21 +385,15 @@
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitor_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">bitor_assign</span><span class="special">/</span><span class="identifier">bitor_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="comment">/* etc. */</span>
-
-<span class="comment">////////////////////////////////////////////////////////////////////////////
-</span><span class="comment">// Headers for the remaining operations follow the same pattern as above. //
-</span><span class="comment">////////////////////////////////////////////////////////////////////////////
-</span></pre>
+</pre>
                 </div>
                 <div class="box-bottom-left"></div>
                 <div class="box-bottom-right"></div>
                 <div class="box-bottom"></div>
               </div>
             </div>
- <p>
- </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example"></a>
- <h6><a id="id464792"></a>
+ <h6><a id="id464991"></a>
           <a href="interlocked_integer_type.html#boost_act.interlocked.interlocked_concepts.interlocked_integer_type.example">Example</a>
         </h6>
             <p>
@@ -428,7 +421,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
- <a accesskey="n" href="../interlocked_integer_models.html">
+ <a accesskey="n" href="../interlocked_semantic_models.html">
           <div class="next-icon"></div>
         </a>
       </div>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_natural_type.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.description"></a>
- <h6><a id="id458848"></a>
+ <h6><a id="id458925"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.description">Description</a>
         </h6>
             <p>
@@ -184,7 +184,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.refinement_of"></a>
- <h6><a id="id459246"></a>
+ <h6><a id="id459324"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.refinement_of">Refinement
           of</a>
         </h6>
@@ -193,7 +193,7 @@
           <code class="literal">Interlocked Type</code></a>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.expression_requirements"></a>
- <h6><a id="id459295"></a>
+ <h6><a id="id459371"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -242,7 +242,7 @@
               </div>
             </div>
             <div class="table">
- <a id="id459495"></a>
+ <a id="id459571"></a>
               <p class="title">
                 <b>Table 5. Interlocked Natural Type Requirements</b>
               </p>
@@ -323,7 +323,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.headers"></a>
- <h6><a id="id459854"></a>
+ <h6><a id="id459931"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.headers">Headers</a>
         </h6>
             <p>
@@ -335,10 +335,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id459876">
+ <div class="style-switcher-box" id="id459952">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id459876',
+ 'id459952',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -377,7 +377,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example"></a>
- <h6><a id="id460662"></a>
+ <h6><a id="id460738"></a>
           <a href="interlocked_natural_type.html#boost_act.interlocked.interlocked_concepts.interlocked_natural_type.example">Example</a>
         </h6>
             <p>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_operation.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
- <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Operation</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="next" href="interlocked_type.html" title="Interlocked Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Operation</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="next" href="interlocked_cage.html" title="Interlocked Cage" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -71,7 +71,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
- <a accesskey="n" href="interlocked_type.html">
+ <a accesskey="n" href="interlocked_cage.html">
           <div class="next-icon"></div>
         </a>
       </div>
@@ -89,14 +89,15 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.description"></a>
- <h6><a id="id455469"></a>
+ <h6><a id="id455480"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.description">Description</a>
         </h6>
             <p>
- An <code class="literal">Interlocked Operation</code> is a function which provides
- guarantees concerning order and visibility of read and write operations
- with respect to multiple threads, often with semantics which may be specified
- by users at the call site.
+ An <code class="literal">Interlocked Operation</code> is a function template whose
+ instantiations provide guarantees about atomicity and order of visibility
+ of read and write operations with respect to multiple threads. Semantics
+ for such operations may be specified by the programmer at compile-time
+ via explicit template arguments.
         </p>
             <p>
           In order to be considered a valid <code class="literal">Interlocked Operation</code>,
@@ -126,8 +127,8 @@
                   </span>
                 </dt>
                 <dd>
- A <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
- <code class="literal">Semantic Type</code></a>.
+ An <a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">
+ <code class="literal">Interlocked Semantic Type</code></a>.
           </dd>
                 <dt>
                   <span class="term">
@@ -142,12 +143,12 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.expression_requirements"></a>
- <h6><a id="id455609"></a>
+ <h6><a id="id455620"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
- <a id="id455628"></a>
+ <a id="id455638"></a>
               <p class="title">
                 <b>Table 2. Interlocked Operation Requirements</b>
               </p>
@@ -181,7 +182,11 @@
                       <td>
               <p>
                 Performs the operation with the default semantics as specified for
- that operation.
+ that operation. <span class="emphasis"><em>Note: Currently, all interlocked operations
+ in this library default to <code class="computeroutput"><span class="identifier">sequential</span></code>
+ semantics, which will likely become the required default for all
+ <code class="literal">Interlocked Operations</code> in future versions. --end
+ note</em></span>
               </p>
               </td>
                     </tr>
@@ -193,15 +198,7 @@
               </td>
                       <td>
               <p>
- Performs the operation with the specified semantics. <span class="emphasis"><em>Note:
- Not all <code class="literal">Interlocked Operations</code> support every
- <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
- <code class="literal">Semantic Type</code></a>. Refer to documentation for
- the corresponding operation for exactly which semantics are supported
- for that operation. All <code class="literal">Interlocked Operations</code>
- must support the <code class="computeroutput"><span class="identifier">default_</span></code>
- <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
- <code class="literal">Semantic Type</code></a>. --end note</em></span>
+ Performs the operation with the specified semantics.
               </p>
               </td>
                     </tr>
@@ -210,238 +207,18 @@
               </div>
             </div>
             <br class="table-break" />
- <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type"></a>
- <h6><a id="id455796"></a>
- <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">Semantic
- Type</a>
- </h6>
- <p>
- While all <code class="literal">Interlocked Operations</code> specify certain guarantees
- by default, these may often be toggled to make an operation's ordering
- more or less constrained by passing a <code class="literal">Semantic Type</code>
- as an explicit template argument to the corresponding template. Not all
- <code class="literal">Interlocked Operations</code> support all <code class="literal">Semantic
- Types</code>.
- </p>
- <div class="important">
- <div class="box-outer-wrapper">
- <div class="box-top-left"></div>
- <div class="box-top-right"></div>
- <div class="box-top"></div>
- <div class="box-inner-wrapper">
- <div class="admonition-graphic">
- <div class="admonition-icon">
- <div class="important-icon"></div>
- </div>
- </div>
- <div class="admonition-body">
- <div class="admonition-title">Important</div>
- <div class="admonition-content">
- <p>
- </p>
- <p>
- If you are unsure as to which semantics you should use for a given
- situation, it is generally safest to use the default semantics of the
- corresponding <code class="literal">Interlocked Operation</code>. If efficiency
- is important for your application, you should prefer to use the least-restrictive
- semantics that you can without breaking allowable ordering of visibility
- between threads.
- </p>
- <p>
- </p>
- </div>
- </div>
- </div>
- <div class="box-bottom-left"></div>
- <div class="box-bottom-right"></div>
- <div class="box-bottom"></div>
- </div>
- </div>
- <div class="table">
- <a id="id455862"></a>
- <p class="title">
- <b>Table 3. Semantic Types</b>
- </p>
- <div class="table-contents">
- <table class="table" summary="Semantic Types">
- <colgroup>
- <col />
- <col />
- </colgroup>
- <thead>
- <tr>
- <th>
- <p>
- Type
- </p>
- </th>
- <th>
- <p>
- Ordering Guarantee
- </p>
- </th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <p>
- <code class="computeroutput"><span class="identifier">unordered</span></code>
- </p>
- </td>
- <td>
- <p>
- No ordering guarantee.
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <code class="computeroutput"><span class="identifier">acquire</span></code>
- </p>
- </td>
- <td>
- <p>
- The operation is made visible before all subsequent instructions.
- <code class="computeroutput"><span class="identifier">acquire</span></code> semantics
- are generally used for read or read-write operations.
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <code class="computeroutput"><span class="identifier">release</span></code>
- </p>
- </td>
- <td>
- <p>
- The operation is made visible after all prior instructions. <code class="computeroutput"><span class="identifier">release</span></code> semantics are generally
- used for write or read-write operations.
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <code class="computeroutput"><span class="identifier">acq_rel</span></code>
- </p>
- </td>
- <td>
- <p>
- Combines the ordering guarantees of both <code class="computeroutput"><span class="identifier">acquire</span></code>
- and <code class="computeroutput"><span class="identifier">release</span></code>. <code class="computeroutput"><span class="identifier">acq_rel</span></code> semantics are generally
- used for read-write operations only.
- </p>
- </td>
- </tr>
- <tr>
- <td>
- <p>
- <code class="computeroutput"><span class="identifier">default_</span></code>
- </p>
- </td>
- <td>
- <p>
- Uses the default ordering guarantees as specified by the corresponding
- <code class="literal">Interlocked Operation</code>. This <code class="literal">Semantic
- Type</code> must be supported by all <code class="literal">Interlocked Operations</code>.
- </p>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- <br class="table-break" />
- <div class="note">
- <div class="box-outer-wrapper">
- <div class="box-top-left"></div>
- <div class="box-top-right"></div>
- <div class="box-top"></div>
- <div class="box-inner-wrapper">
- <div class="admonition-graphic">
- <div class="admonition-icon">
- <div class="note-icon"></div>
- </div>
- </div>
- <div class="admonition-body">
- <div class="admonition-title">Note</div>
- <div class="admonition-content">
- <p>
- </p>
- <p>
- In a future release, another <code class="literal">Semantic Type</code> may be
- introduced called <code class="computeroutput"><span class="identifier">thread_unsafe</span></code>
- which does not perform the operation atomically at all. This type would
- be a required semantic for all <code class="literal">Interlocked Operations</code>,
- much like <code class="computeroutput"><span class="identifier">default_</span></code>.
- </p>
- <p>
- </p>
- </div>
- </div>
- </div>
- <div class="box-bottom-left"></div>
- <div class="box-bottom-right"></div>
- <div class="box-bottom"></div>
- </div>
- </div>
- <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.headers"></a>
- <h6><a id="id456185"></a>
- Headers
- </h6>
- <p>
- In general, you should not have to include the following files in order
- to use <code class="literal">Interlocked Operations</code>, since including the file
- for the operation implicitly includes the corresponding semantics. However,
- if you wish to create your own <code class="literal">Interlocked Operations</code>,
- you would use the headers notated below to bring in the semantic types
- which are necessary for use with your operation.
- </p>
- <p>
-
-</p>
- <div class="programlisting">
- <div class="box-outer-wrapper">
- <div class="box-top-left"></div>
- <div class="box-top-right"></div>
- <div class="box-top"></div>
- <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id456230">
- <script type="text/javascript" > <!--
- boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id456230',
- '../../../../../doc/style/html/syntax.xml',
- '../../../../../doc/style/html'
- );
- //--></script>
-</div>
- <pre>
-<span class="comment">// Brings in all semantic types.
-</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
-<span class="comment">// Fine-grained semantic headers.
-</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="keyword">default</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
- </div>
- <div class="box-bottom-left"></div>
- <div class="box-bottom-right"></div>
- <div class="box-bottom"></div>
- </div>
- </div>
- <p>
- </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_operation.example"></a>
- <h6><a id="id456685"></a>
+ <h6><a id="id455770"></a>
           <a href="interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.example">Example</a>
         </h6>
             <p>
+ The following example uses <code class="computeroutput"><span class="identifier">multiply_assign</span></code>,
+ which is a model of <code class="literal">Interlocked Operation</code> that multiplies
+ the first argument by the second argument and stores the result back into
+ the first argument. The result of the call is the value of the first argument
+ prior to the operation being performed.
+ </p>
+ <p>
           </p>
             <p>
             
@@ -452,10 +229,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id456710">
+ <div class="style-switcher-box" id="id455814">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id456710',
+ 'id455814',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -537,7 +314,7 @@
         </a>
       </div>
       <div class="spirit-nav-icon">
- <a accesskey="n" href="interlocked_type.html">
+ <a accesskey="n" href="interlocked_cage.html">
           <div class="next-icon"></div>
         </a>
       </div>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Semantic Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_cage.html" title="Interlocked Cage" /><link rel="next" href="interlocked_type.html" title="Interlocked Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../../doc/style/html/syntax.xml',
+ '../../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../../doc/chapters.xml',
+ '../../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../../sections.xml',
+ '../../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_cage.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_concepts.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_type.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h4 class="title"><a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type"></a><a href="interlocked_semantic_type.html" title="Interlocked Semantic Type">Interlocked
+ Semantic Type</a></h4>
+ </div>
+ </div>
+ </div>
+ <a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.description"></a>
+ <h6><a id="id456944"></a>
+ Description
+ </h6>
+ <p>
+ An <code class="literal">Interlocked Semantic type</code> is a types which is used
+ to specify atomicity and ordering guarantees when instantiating <a href="interlocked_operation.html" title="Interlocked Operation">
+ <code class="literal">Interlocked Operations</code></a> and <a href="interlocked_cage.html" title="Interlocked Cage">
+ <code class="literal">Interlocked Cages</code></a>.
+ </p>
+ <a id="boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.concept_of"></a>
+ <h6><a id="id457014"></a>
+ <a href="interlocked_semantic_type.html#boost_act.interlocked.interlocked_concepts.interlocked_semantic_type.concept_of">Concept
+ of</a>
+ </h6>
+ <div class="itemizedlist">
+ <ul>
+ <li>
+ <a href="../interlocked_semantic_models.html" title="Interlocked Semantic Models"> <code class="literal">Interlocked
+ Semantic Models</code></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_cage.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked_concepts.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_type.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_concepts/interlocked_type.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
- <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_operation.html" title="Interlocked Operation" /><link rel="next" href="interlocked_natural_type.html" title="Interlocked Natural Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Type</title><link rel="stylesheet" href="../../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked_concepts.html" title="Interlocked Concepts" /><link rel="prev" href="interlocked_semantic_type.html" title="Interlocked Semantic Type" /><link rel="next" href="interlocked_natural_type.html" title="Interlocked Natural Type" /><script type="text/javascript" src="../../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -56,7 +56,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
- <a accesskey="p" href="interlocked_operation.html">
+ <a accesskey="p" href="interlocked_semantic_type.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.description"></a>
- <h6><a id="id457247"></a>
+ <h6><a id="id457086"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.description">Description</a>
         </h6>
             <p>
@@ -156,7 +156,7 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.expression_requirements"></a>
- <h6><a id="id457532"></a>
+ <h6><a id="id457369"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.expression_requirements">Expression
           Requirements</a>
         </h6>
@@ -204,7 +204,7 @@
               </div>
             </div>
             <div class="table">
- <a id="id457731"></a>
+ <a id="id457567"></a>
               <p class="title">
                 <b>Table 4. Interlocked Type Requirements</b>
               </p>
@@ -250,11 +250,8 @@
                       <td>
               <p>
                 Returns the value stored in <code class="computeroutput"><span class="identifier">i</span></code>.
- This function is an <a href="interlocked_operation.html" title="Interlocked Operation">
- <code class="literal">Interlocked Operation</code></a> and defaults to
- <code class="computeroutput"><span class="identifier">acquire</span></code> semantics.
- Allowable semantics for this operation are <code class="computeroutput"><span class="identifier">unordered</span></code>
- and <code class="computeroutput"><span class="identifier">acquire</span></code>.
+ <code class="computeroutput"><span class="identifier">load</span></code> is an <a href="interlocked_operation.html" title="Interlocked Operation">
+ <code class="literal">Interlocked Operation</code></a>.
               </p>
               </td>
                     </tr>
@@ -274,12 +271,8 @@
                       <td>
               <p>
                 Stores the value of <code class="computeroutput"><span class="identifier">c1</span></code>
- to object <code class="computeroutput"><span class="identifier">i</span></code>. This
- function is an <a href="interlocked_operation.html" title="Interlocked Operation">
- <code class="literal">Interlocked Operation</code></a> and defaults to
- <code class="computeroutput"><span class="identifier">release</span></code> semantics.
- Allowable semantics for this operation are <code class="computeroutput"><span class="identifier">unordered</span></code>
- and <code class="computeroutput"><span class="identifier">release</span></code>.
+ to object <code class="computeroutput"><span class="identifier">i</span></code>. <code class="computeroutput"><span class="identifier">store</span></code> is an <a href="interlocked_operation.html" title="Interlocked Operation">
+ <code class="literal">Interlocked Operation</code></a>.
               </p>
               </td>
                     </tr>
@@ -289,7 +282,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.headers"></a>
- <h6><a id="id458057"></a>
+ <h6><a id="id457843"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.headers">Headers</a>
         </h6>
             <p>
@@ -301,10 +294,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id458078">
+ <div class="style-switcher-box" id="id457865">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id458078',
+ 'id457865',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -320,8 +313,12 @@
 <span class="comment">// load headers.
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_thread_unsafe</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load</span><span class="special">/</span><span class="identifier">load_sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 
 <span class="comment">// Forward declarations.
 </span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">load_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -342,7 +339,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_concepts.interlocked_type.example"></a>
- <h6><a id="id458791"></a>
+ <h6><a id="id458869"></a>
           <a href="interlocked_type.html#boost_act.interlocked.interlocked_concepts.interlocked_type.example">Example</a>
         </h6>
             <p>
@@ -355,7 +352,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
- <a accesskey="p" href="interlocked_operation.html">
+ <a accesskey="p" href="interlocked_semantic_type.html">
           <div class="prev-icon"></div>
         </a>
       </div>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
- <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type" /><link rel="next" href="interlocked_integer_models/interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Integer Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_cage_models/interlocked_compiler_cage.html" title="Interlocked Compiler Cage" /><link rel="next" href="interlocked_integer_models/interlocked_integer_typedefs.html" title="Interlocked Integer Typedefs" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
       <script type="text/javascript" > <!--
          boostscript.init( new Array(
             boostscript.nested_links,
@@ -56,7 +56,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
- <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+ <a accesskey="p" href="interlocked_cage_models/interlocked_compiler_cage.html">
           <div class="prev-icon"></div>
         </a>
       </div>
@@ -121,7 +121,7 @@
     </div>
     <div class="spirit-nav">
       <div class="spirit-nav-icon">
- <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+ <a accesskey="p" href="interlocked_cage_models/interlocked_compiler_cage.html">
           <div class="prev-icon"></div>
         </a>
       </div>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_metafunctions.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.description"></a>
- <h6><a id="id465586"></a>
+ <h6><a id="id468184"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.description">Description</a>
         </h6>
             <p>
@@ -101,7 +101,7 @@
           library (<span class="emphasis"><em>ToDo: insert link here</em></span>).
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.header"></a>
- <h6><a id="id465692"></a>
+ <h6><a id="id468290"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.header">Header</a>
         </h6>
             <p>
@@ -113,10 +113,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id465714">
+ <div class="style-switcher-box" id="id468312">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id465714',
+ 'id468312',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -138,7 +138,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.synopsis"></a>
- <h6><a id="id465879"></a>
+ <h6><a id="id468476"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.synopsis">Synopsis</a>
         </h6>
             <div class="programlisting">
@@ -147,10 +147,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id465899">
+ <div class="style-switcher-box" id="id468496">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id465899',
+ 'id468496',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -161,47 +161,47 @@
 </span><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">LeastInt</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">int_fast_t</span>
 <span class="special">{</span>
- <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">fast</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// signed
 </span><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">int_t</span>
 <span class="special">{</span>
- <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">least</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">least</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// unsigned
 </span><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">int</span> <span class="identifier">Bits</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">uint_t</span>
 <span class="special">{</span>
- <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">least</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">least</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// signed
 </span><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">long</span> <span class="identifier">MaxValue</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">int_max_value_t</span>
 <span class="special">{</span>
- <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">least</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">least</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// signed
 </span><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">long</span> <span class="identifier">MinValue</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">int_min_value_t</span>
 <span class="special">{</span>
- <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">least</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">least</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 
 <span class="comment">// unsigned
 </span><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <span class="identifier">Value</span> <span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">uint_value_t</span>
 <span class="special">{</span>
- <span class="keyword">typedef</span> <em class="replaceable"><code>implementation_supplied</code></em> <span class="identifier">least</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>unspecified-type</code></em> <span class="identifier">least</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">int_fast_t</span><span class="special">&lt;</span> <span class="identifier">least</span> <span class="special">&gt;::</span><span class="identifier">fast</span> <span class="identifier">fast</span><span class="special">;</span>
 <span class="special">};</span>
 </pre>
                 </div>
@@ -211,7 +211,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of"></a>
- <h6><a id="id466648"></a>
+ <h6><a id="id469278"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.model_of">Model
           of</a>
         </h6>
@@ -281,14 +281,14 @@
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics"></a>
- <h6><a id="id466861"></a>
+ <h6><a id="id469491"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.expression_semantics">Expression
           Semantics</a>
         </h6>
             <div class="table">
- <a id="id466880"></a>
+ <a id="id469510"></a>
               <p class="title">
- <b>Table 8. Interlocked Integer Metafunction Requirements</b>
+ <b>Table 9. Interlocked Integer Metafunction Requirements</b>
               </p>
               <div class="table-contents">
                 <table class="table" summary="Interlocked Integer Metafunction Requirements">
@@ -481,7 +481,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.example"></a>
- <h6><a id="id467791"></a>
+ <h6><a id="id470420"></a>
           <a href="interlocked_integer_metafunctions.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_metafunctions.example">Example</a>
         </h6>
             <p>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_integer_models/interlocked_integer_typedefs.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.description"></a>
- <h6><a id="id464872"></a>
+ <h6><a id="id467470"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.description">Description</a>
         </h6>
             <p>
@@ -98,7 +98,7 @@
           size and performance requirements are specified by their name.
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.header"></a>
- <h6><a id="id464923"></a>
+ <h6><a id="id467520"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.header">Header</a>
         </h6>
             <div class="programlisting">
@@ -107,10 +107,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id464943">
+ <div class="style-switcher-box" id="id467540">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id464943',
+ 'id467540',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -128,7 +128,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.synopsis"></a>
- <h6><a id="id465095"></a>
+ <h6><a id="id467692"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.synopsis">Synopsis</a>
         </h6>
             <div class="programlisting">
@@ -137,10 +137,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id465114">
+ <div class="style-switcher-box" id="id467712">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id465114',
+ 'id467712',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -174,7 +174,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.model_of"></a>
- <h6><a id="id465479"></a>
+ <h6><a id="id468076"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.model_of">Model
           of</a>
         </h6>
@@ -183,7 +183,7 @@
           <code class="literal">Interlocked Integer Type</code></a>.
         </p>
             <a id="boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.example"></a>
- <h6><a id="id465527"></a>
+ <h6><a id="id468125"></a>
           <a href="interlocked_integer_typedefs.html#boost_act.interlocked.interlocked_integer_models.interlocked_integer_typedefs.example">Example</a>
         </h6>
             <p>

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_semantic_models.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interlocked Semantic Models</title><link rel="stylesheet" href="../../../../doc/style/html/main.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.72.0" /><link rel="start" href="../../index.html" title="Boost.Act" /><link rel="up" href="../interlocked.html" title="Interlocked" /><link rel="prev" href="interlocked_concepts/interlocked_integer_type.html" title="Interlocked Integer Type" /><link rel="next" href="interlocked_cage_models.html" title="Interlocked Cage Models" /><script type="text/javascript" src="../../../../doc/javascript/main.js"></script>
+ <script type="text/javascript" > <!--
+ boostscript.init( new Array(
+ boostscript.nested_links,
+ boostscript.style_switcher,
+ boostscript.common
+ ),
+ '../../../../doc/javascript'
+ );
+ //--></script>
+
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'include_alternate_stylesheets',
+ '../../../../doc/style/html/syntax.xml',
+ '../../../../doc/style/html'
+ );
+ //--></script>
+<link rel="alternate stylesheet" type="text/css" title="Quickbook source" href="../../../../doc/style/html/conversion/boostbook_to_quickbook.css" />
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'load_user_stylesheet' );
+ //--></script>
+</head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading-navigation-box">
+ <div class="nested-links-select-box" id="chapters_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'chapters_select_box',
+ '../../../../doc/chapters.xml',
+ '../../../../libs');
+ //--></script>
+</div>
+ <div class="nested-links-select-box" id="sections_select_box">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.nested_links, 'select_box',
+ 'sections_select_box',
+ '../../sections.xml',
+ '../.././');
+ //--></script>
+</div>
+ </div>
+ <div class="search-box">
+ <form id="cref" action="http://google.com/cse">
+ <div class="search-box-label"></div>
+ <div>
+ <input type="hidden" name="cref" value="http://tinyurl.com/33np8c" />
+ <input class="search-box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_cage_models.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div class="section">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title"><a id="boost_act.interlocked.interlocked_semantic_models"></a><a href="interlocked_semantic_models.html" title="Interlocked Semantic Models">Interlocked
+ Semantic Models</a></h3>
+ </div>
+ </div>
+ </div>
+ <div class="important">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <div class="admonition-graphic">
+ <div class="admonition-icon">
+ <div class="important-icon"></div>
+ </div>
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Important</div>
+ <div class="admonition-content">
+ <p>
+ </p>
+ <p>
+ The <code class="computeroutput"><span class="identifier">sequential</span></code> and <code class="computeroutput"><span class="identifier">thread_unsafe</span></code> semantics described on
+ this page are not yet implemented.
+ </p>
+ <p>
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ <a id="boost_act.interlocked.interlocked_semantic_models.description"></a>
+ <h5><a id="id465080"></a>
+ Description
+ </h5>
+ <p>
+ The types detailed in this section are the <a href="interlocked_concepts/interlocked_semantic_type.html" title="Interlocked Semantic Type">
+ <code class="literal">Interlocked Semantic Types</code></a> for use with <a href="interlocked_concepts/interlocked_operation.html" title="Interlocked Operation">
+ <code class="literal">Interlocked Operations</code></a> and __interlocked<span class="underline">barriers</span>_.
+ </p>
+ <a id="boost_act.interlocked.interlocked_semantic_models.model_of"></a>
+ <h5><a id="id465148"></a>
+ <a href="interlocked_semantic_models.html#boost_act.interlocked.interlocked_semantic_models.model_of">Model
+ of</a>
+ </h5>
+ <p>
+ Each type mentioned above is an <a href="interlocked_concepts/interlocked_semantic_type.html" title="Interlocked Semantic Type">
+ <code class="literal">Interlocked Semantic Type</code></a>.
+ </p>
+ <div class="important">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <div class="admonition-graphic">
+ <div class="admonition-icon">
+ <div class="important-icon"></div>
+ </div>
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Important</div>
+ <div class="admonition-content">
+ <p>
+ </p>
+ <p>
+ If you are unsure as to which semantics you should use for a given situation,
+ it is generally safest to use the default semantics of the corresponding
+ operation. If efficiency is important for your application, you should
+ prefer to use the least-restrictive semantics that you can without breaking
+ allowable ordering of visibility between threads.
+ </p>
+ <p>
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ <div class="table">
+ <a id="id465203"></a>
+ <p class="title">
+ <b>Table 8. Semantic Types</b>
+ </p>
+ <div class="table-contents">
+ <table class="table" summary="Semantic Types">
+ <colgroup>
+ <col />
+ <col />
+ <col />
+ </colgroup>
+ <thead>
+ <tr>
+ <th>
+ <p>
+ Type
+ </p>
+ </th>
+ <th>
+ <p>
+ Thread-Safe
+ </p>
+ </th>
+ <th>
+ <p>
+ Ordering Guarantee
+ </p>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">thread_unsafe</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ no
+ </p>
+ </td>
+ <td>
+ <p>
+ No atomicity or ordering with respect to multiple threads. <span class="emphasis"><em>Note:
+ Useful for generic programming, particular when the requirement for
+ thread-safety is dependent on a template argument. --end note</em></span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unordered</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ yes
+ </p>
+ </td>
+ <td>
+ <p>
+ No ordering guarantee.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">acquire</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ yes
+ </p>
+ </td>
+ <td>
+ <p>
+ Ensures that all subsequent operations in program order are performed
+ after all preceding loads in program order.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">release</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ yes
+ </p>
+ </td>
+ <td>
+ <p>
+ Ensures that all preceding operations in program order are performed
+ after all subsequent stores in program order.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">acq_rel</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ yes
+ </p>
+ </td>
+ <td>
+ <p>
+ Combines the semantics of <code class="computeroutput"><span class="identifier">acquire</span></code>
+ and <code class="computeroutput"><span class="identifier">release</span></code>.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sequential</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ yes
+ </p>
+ </td>
+ <td>
+ <p>
+ Ensures that all preceding operations in program order are performed
+ after all subsequent operations in program order.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">default_</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ </p>
+ </td>
+ <td>
+ <p>
+ Uses the default ordering guarantees as specified by the corresponding
+ operation. <span class="emphasis"><em>Note: This will likely be removed as all operations
+ should now default to sequential. --end note</em></span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break" />
+ <a id="boost_act.interlocked.interlocked_semantic_models.headers"></a>
+ <h5><a id="id465553"></a>
+ Headers
+ </h5>
+ <p>
+ In general, you should not have to explicitly include the following files
+ in order to use <code class="literal">Interlocked Operations</code> and <code class="literal">Interlocked
+ Barriers</code>, since including the file for the operation implicitly
+ includes the corresponding semantics. However, if you wish to create your
+ own operations, you would use the headers notated below to bring in the semantic
+ types which are necessary.
+ </p>
+ <p>
+
+</p>
+ <div class="programlisting">
+ <div class="box-outer-wrapper">
+ <div class="box-top-left"></div>
+ <div class="box-top-right"></div>
+ <div class="box-top"></div>
+ <div class="box-inner-wrapper">
+ <div class="style-switcher-box" id="id465598">
+ <script type="text/javascript" > <!--
+ boostscript.call( boostscript.style_switcher, 'insert_style_selector',
+ 'id465598',
+ '../../../../doc/style/html/syntax.xml',
+ '../../../../doc/style/html'
+ );
+ //--></script>
+</div>
+ <pre>
+<span class="comment">// Brings in all semantic types.
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">// Fine-grained semantic headers.
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">thread_unsafe</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">unordered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acquire</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">release</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">acq_rel</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="identifier">sequential</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">act</span><span class="special">/</span><span class="identifier">interlocked</span><span class="special">/</span><span class="identifier">semantics</span><span class="special">/</span><span class="keyword">default</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+ </div>
+ <div class="box-bottom-left"></div>
+ <div class="box-bottom-right"></div>
+ <div class="box-bottom"></div>
+ </div>
+ </div>
+ <p>
+ </p>
+ <a id="boost_act.interlocked.interlocked_semantic_models.example"></a>
+ <h5><a id="id466197"></a>
+ Example
+ </h5>
+ <p>
+ ToDo: Add an example here.
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <div class="spirit-nav-icon">
+ <a accesskey="p" href="interlocked_concepts/interlocked_integer_type.html">
+ <div class="prev-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="u" href="../interlocked.html">
+ <div class="up-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="h" href="../../index.html">
+ <div class="home-icon"></div>
+ </a>
+ </div>
+ <div class="spirit-nav-icon">
+ <a accesskey="n" href="interlocked_cage_models.html">
+ <div class="next-icon"></div>
+ </a>
+ </div>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p>Copyright © 2006 , 2007 Matthew Calabrese</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/interlocked/interlocked_support/checking_support.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -89,7 +89,7 @@
               </div>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.description"></a>
- <h6><a id="id467867"></a>
+ <h6><a id="id470497"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.description">Description</a>
         </h6>
             <p>
@@ -126,23 +126,23 @@
                   </span>
                 </dt>
                 <dd>
- A <a href="../interlocked_concepts/interlocked_operation.html#boost_act.interlocked.interlocked_concepts.interlocked_operation.semantic_type">
- <code class="literal">Semantic Type</code></a>, as specified without qualification
- and with the exact name as listed in documentation (not a typedef name).
- As an exception, <code class="literal">default_</code>, <code class="literal">default</code>,
+ An <a href="../interlocked_concepts/interlocked_semantic_type.html" title="Interlocked Semantic Type">
+ <code class="literal">Interlocked Semantic Type</code></a>, as specified without
+ qualification and with the exact name as listed in documentation (not
+ a typedef name). As an exception, <code class="literal">default_</code>, <code class="literal">default</code>,
             and <code class="literal">_</code> may each be used when specifying default semantics.
           </dd>
               </dl>
             </div>
             <a id="boost_act.interlocked.interlocked_support.checking_support.expression_requirements"></a>
- <h6><a id="id468022"></a>
+ <h6><a id="id470651"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.expression_requirements">Expression
           Requirements</a>
         </h6>
             <div class="table">
- <a id="id468040"></a>
+ <a id="id470670"></a>
               <p class="title">
- <b>Table 9. Interlocked Operation Requirements</b>
+ <b>Table 10. Interlocked Operation Requirements</b>
               </p>
               <div class="table-contents">
                 <table class="table" summary="Interlocked Operation Requirements">
@@ -185,7 +185,7 @@
             </div>
             <br class="table-break" />
             <a id="boost_act.interlocked.interlocked_support.checking_support.headers"></a>
- <h6><a id="id468175"></a>
+ <h6><a id="id470804"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.headers">Headers</a>
         </h6>
             <p>
@@ -197,10 +197,10 @@
                 <div class="box-top-right"></div>
                 <div class="box-top"></div>
                 <div class="box-inner-wrapper">
- <div class="style-switcher-box" id="id468195">
+ <div class="style-switcher-box" id="id470825">
       <script type="text/javascript" > <!--
           boostscript.call( boostscript.style_switcher, 'insert_style_selector',
- 'id468195',
+ 'id470825',
              '../../../../../doc/style/html/syntax.xml',
              '../../../../../doc/style/html'
           );
@@ -224,7 +224,7 @@
             <p>
         </p>
             <a id="boost_act.interlocked.interlocked_support.checking_support.example"></a>
- <h6><a id="id468302"></a>
+ <h6><a id="id470933"></a>
           <a href="checking_support.html#boost_act.interlocked.interlocked_support.checking_support.example">Example</a>
         </h6>
             <p>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/introduction.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -111,7 +111,7 @@
       strategy on a case-by-case basis with potentially no runtime cost to the application.
     </p>
             <a id="boost_act.introduction.interlocked_types"></a>
- <h4><a id="id388726"></a>
+ <h4><a id="id388718"></a>
       <a href="introduction.html#boost_act.introduction.interlocked_types">Interlocked Types</a>
     </h4>
             <p>
@@ -124,7 +124,7 @@
       thread-safe operations with semantics specified by the user at the call-site.
     </p>
             <a id="boost_act.introduction.polymorphic_algorithms"></a>
- <h4><a id="id388786"></a>
+ <h4><a id="id388778"></a>
       <a href="introduction.html#boost_act.introduction.polymorphic_algorithms">Polymorphic Algorithms</a>
     </h4>
             <p>
@@ -146,7 +146,7 @@
       of the creation of user-defined polymorphic algorithms.
     </p>
             <a id="boost_act.introduction.algorithm_models"></a>
- <h4><a id="id388833"></a>
+ <h4><a id="id388825"></a>
       <a href="introduction.html#boost_act.introduction.algorithm_models">Algorithm Models</a>
     </h4>
             <p>
@@ -159,7 +159,7 @@
       library.
     </p>
             <a id="boost_act.introduction.actions"></a>
- <h4><a id="id388858"></a>
+ <h4><a id="id388850"></a>
       <a href="introduction.html#boost_act.introduction.actions">Actions</a>
     </h4>
             <p>
@@ -178,7 +178,7 @@
       and which execute in the same thread as the original call.
     </p>
             <a id="boost_act.introduction.active_objects"></a>
- <h4><a id="id390126"></a>
+ <h4><a id="id390131"></a>
       <a href="introduction.html#boost_act.introduction.active_objects">Active Objects</a>
     </h4>
             <p>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/boost_act/rationale.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -88,7 +88,7 @@
       decisions.
     </p>
             <a id="boost_act.rationale.interlocked_operation_names"></a>
- <h4><a id="id468550"></a>
+ <h4><a id="id471168"></a>
       <a href="rationale.html#boost_act.rationale.interlocked_operation_names">Interlocked
       Operation Names</a>
     </h4>
@@ -131,7 +131,7 @@
       around, especially if you have a desirable alternative.
     </p>
             <a id="boost_act.rationale.policy_based_design"></a>
- <h4><a id="id468766"></a>
+ <h4><a id="id471368"></a>
       <a href="rationale.html#boost_act.rationale.policy_based_design">Policy-Based Design</a>
     </h4>
             <p>
@@ -171,7 +171,7 @@
       design.
     </p>
             <a id="boost_act.rationale.actions_vs__futures"></a>
- <h4><a id="id468845"></a>
+ <h4><a id="id471720"></a>
       <a href="rationale.html#boost_act.rationale.actions_vs__futures">Actions vs. Futures</a>
     </h4>
             <p>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/html/index.html 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -82,7 +82,7 @@
                 </div>
                 <div>
                   <div class="legalnotice">
- <a id="id388330"></a>
+ <a id="id388323"></a>
                     <p>
         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)
@@ -145,6 +145,18 @@
                             </dt>
                             <dt>
                               <span class="section">
+ <a href="boost_act/interlocked/interlocked_concepts/interlocked_cage.html">Interlocked
+ Cage</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="boost_act/interlocked/interlocked_concepts/interlocked_semantic_type.html">Interlocked
+ Semantic Type</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
                                 <a href="boost_act/interlocked/interlocked_concepts/interlocked_type.html">Interlocked
         Type</a>
                               </span>
@@ -171,6 +183,34 @@
                         </dd>
                         <dt>
                           <span class="section">
+ <a href="boost_act/interlocked/interlocked_semantic_models.html">Interlocked
+ Semantic Models</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="boost_act/interlocked/interlocked_cage_models.html">Interlocked
+ Cage Models</a>
+ </span>
+ </dt>
+ <dd>
+ <dl>
+ <dt>
+ <span class="section">
+ <a href="boost_act/interlocked/interlocked_cage_models/interlocked_memory_cage.html">Interlocked
+ Memory Cage</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="boost_act/interlocked/interlocked_cage_models/interlocked_compiler_cage.html">Interlocked
+ Compiler Cage</a>
+ </span>
+ </dt>
+ </dl>
+ </dd>
+ <dt>
+ <span class="section">
                             <a href="boost_act/interlocked/interlocked_integer_models.html">Interlocked
       Integer Models</a>
                           </span>
@@ -241,7 +281,7 @@
     </div>
     <div id="footer">
       <div id="footer-left">
- <div id="revised">Revised: July 08, 2007 at 01:21:02 GMT</div>
+ <div id="revised">Revised: July 12, 2007 at 00:15:27 GMT</div>
         <div id="copyright"></div>
         <div id="license">
           <p>Distributed under the

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,6 +1,8 @@
 [section Interlocked]
 
 [include interlocked/concepts.qbk]
+[include interlocked/interlocked_semantic_models.qbk]
+[include interlocked/interlocked_cage_models.qbk]
 [include interlocked/integer_models.qbk]
 [include interlocked/support.qbk]
 

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -1,6 +1,8 @@
 [section Interlocked Concepts]
 
 [include concepts/interlocked_operation.qbk]
+[include concepts/interlocked_cage.qbk]
+[include concepts/interlocked_semantic_type.qbk]
 [include concepts/interlocked_type.qbk]
 [include concepts/interlocked_natural_type.qbk]
 [include concepts/interlocked_arithmetic_type.qbk]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_cage.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,43 @@
+[section Interlocked Cage]
+
+[heading Description]
+
+An [concept Interlocked Cage] is a template whose instantiations are types which
+manage the order of visibility of read and write operations that occur during
+their objects' lifetime, effectively providing those operations with potentially
+more restrictive ordering constraints. Semantics for such cages may be specified
+by the programmer at compile-time via explicit template arguments.
+
+[heading Concept of]
+
+* __interlocked_memory_cage__
+* __interlocked_compiler_cage__
+
+[variablelist Notation
+[[[~name]] [An [concept Interlocked Cage].] ]
+[[`S1`] [An __interlocked_semantic_type__.] ]
+[[`S2`] [An __interlocked_semantic_type__.] ]
+[[`B`] [A type which is an instantiation of `name` with or without
+ additional /cv-qualification/.
+ ] ]
+[[`b`] [An object of type `B&`.] ]
+]
+
+[heading Expression Requirements]
+
+[table Interlocked Operation Requirements
+[[Expression] [Pre/Post-Condition] ]
+[[`name<>()`] [Instantiates a cage with the
+ default semantics (`sequential`).
+ ] ]
+[[`name<S1>()`] [Instantiates a cage with the
+ specified semantics.
+ ] ]
+[[`name<S1,S2>()`] [Instantiates a cage with the
+ semantic requirements of `S1` which
+ are not already specified by `S2`.
+ ] ]
+[[`b.~B()`] [Destroys the cage `b`.] ]
+]
+
+[endsect]

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_integer_type.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -48,7 +48,6 @@
 
 [heading Headers]
 
-``
   // Brings in all interlocked operations.
   #include <boost/act/interlocked.hpp>
   
@@ -58,10 +57,12 @@
   // bitand_assign headers.
   #include <boost/act/interlocked/bitand_assign.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign.hpp>
+ #include <boost/act/interlocked/bitand_assign/bitand_assign_thread_unsafe.hpp>
+ #include <boost/act/interlocked/bitand_assign/bitand_assign_unordered.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign_acquire.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign_release.hpp>
   #include <boost/act/interlocked/bitand_assign/bitand_assign_acq_rel.hpp>
- #include <boost/act/interlocked/bitand_assign/bitand_assign_unordered.hpp>
+ #include <boost/act/interlocked/bitand_assign/bitand_assign_sequential.hpp>
   
   // Forward declarations.
   #include <boost/act/interlocked/bitand_assign_fwd.hpp>
@@ -72,11 +73,7 @@
   #include <boost/act/interlocked/bitor_assign.hpp>
   #include <boost/act/interlocked/bitor_assign/bitor_assign.hpp>
   /* etc. */
-
- ////////////////////////////////////////////////////////////////////////////
- // Headers for the remaining operations follow the same pattern as above. //
- ////////////////////////////////////////////////////////////////////////////
-``
+
 
 [heading Example]
 

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_operation.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -2,10 +2,10 @@
 
 [heading Description]
 
-An [concept Interlocked Operation] is a function which provides guarantees
-concerning order and visibility of read and write operations with respect to
-multiple threads, often with semantics which may be specified by users at the
-call site.
+An [concept Interlocked Operation] is a function template whose instantiations
+provide guarantees about atomicity and order of visibility of read and write
+operations with respect to multiple threads. Semantics for such operations may
+be specified by the programmer at compile-time via explicit template arguments.
 
 In order to be considered a valid [concept Interlocked Operation], given
 the variable definitions below, the following expressions must be well-formed
@@ -13,7 +13,7 @@
 
 [variablelist Notation
 [[[~name]][An [concept Interlocked Operation].] ]
-[[`S`] [A __semantic_type__.] ]
+[[`S`] [An __interlocked_semantic_type__.] ]
 [[[~args]] [The argument list (if any) for the
                      [concept Interlocked Operation].
                     ] ]
@@ -29,91 +29,26 @@
 [[`__op_call__`] [Performs the operation with the
                                            default semantics as specified for
                                            that operation.
+ [tablenote Currently, all interlocked
+ operations in this library default
+ to `sequential` semantics, which
+ will likely become the required
+ default for all [concept Interlocked
+ Operations] in future versions.
+ ]
                                           ] ]
 [[`__op_call_sem__`] [Performs the operation with the
                                            specified semantics.
- [tablenote Not all
- [concept Interlocked Operations]
- support every __semantic_type__.
- Refer to documentation for the
- corresponding operation for exactly
- which semantics are supported for
- that operation. All
- [concept Interlocked Operations]
- must support the `default_`
- __semantic_type__.
- ]
                                           ] ]
 ]
 
-[heading Semantic Type]
-
-While all [concept Interlocked Operations] specify certain guarantees by
-default, these may often be toggled to make an operation's ordering more or less
-constrained by passing a [concept Semantic Type] as an explicit template
-argument to the corresponding template. Not all [concept Interlocked Operations]
-support all [concept Semantic Types].
-
-[important
-If you are unsure as to which semantics you should use for a given situation, it
-is generally safest to use the default semantics of the corresponding
-[concept Interlocked Operation]. If efficiency is important for your
-application, you should prefer to use the least-restrictive semantics that you
-can without breaking allowable ordering of visibility between threads.
-]
-
-[table Semantic Types
-[[Type] [Ordering Guarantee] ]
-[[`unordered`][No ordering guarantee.] ]
-[[`acquire`] [The operation is made visible before all subsequent instructions.
- `acquire` semantics are generally used for read or read-write
- operations.
- ] ]
-[[`release`] [The operation is made visible after all prior instructions.
- `release` semantics are generally used for write or read-write
- operations.
- ] ]
-[[`acq_rel`] [Combines the ordering guarantees of both `acquire` and `release`.
- `acq_rel` semantics are generally used for read-write operations
- only.
- ] ]
-[[`default_`] [Uses the default ordering guarantees as specified by the
- corresponding [concept Interlocked Operation]. This
- [concept Semantic Type] must be supported by all
- [concept Interlocked Operations].
- ] ]
-]
-
-[note
-In a future release, another [concept Semantic Type] may be introduced called
-`thread_unsafe` which does not perform the operation atomically at all. This
-type would be a required semantic for all [concept Interlocked Operations], much
-like `default_`.
-]
-
-[heading Headers]
-
-In general, you should not have to include the following files in order to use
-[concept Interlocked Operations], since including the file for the operation
-implicitly includes the corresponding semantics. However, if you wish to create
-your own [concept Interlocked Operations], you would use the headers notated
-below to bring in the semantic types which are necessary for use with your
-operation.
-
-``
- // Brings in all semantic types.
- #include <boost/act/interlocked/semantics.hpp>
-
- // Fine-grained semantic headers.
- #include <boost/act/interlocked/semantics/unordered.hpp>
- #include <boost/act/interlocked/semantics/acquire.hpp>
- #include <boost/act/interlocked/semantics/release.hpp>
- #include <boost/act/interlocked/semantics/acq_rel.hpp>
- #include <boost/act/interlocked/semantics/default.hpp>
-``
-
 [heading Example]
 
+The following example uses `multiply_assign`, which is a model of
+[concept Interlocked Operation] that multiplies the first argument by the second
+argument and stores the result back into the first argument. The result of the
+call is the value of the first argument prior to the operation being performed.
+
 [import ../../../example/multiply_assign.cpp]
 
 [multiply_assign]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_semantic_type.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_semantic_type.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,13 @@
+[section Interlocked Semantic Type]
+
+[heading Description]
+
+An [concept Interlocked Semantic type] is a types which is used to specify
+atomicity and ordering guarantees when instantiating __interlocked_operations__
+and __interlocked_cages__.
+
+[heading Concept of]
+
+* __interlocked_semantic_models__
+
+[endsect]

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/concepts/interlocked_type.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -36,19 +36,11 @@
 
 [table Interlocked Type Requirements
 [[Expression] [Return Type][Pre/Post-Condition] ]
-[[`load( i )`] [`IU`] [Returns the value stored in `i`. This
- function is an
- __interlocked_operation__ and defaults to
- `acquire` semantics. Allowable semantics
- for this operation are `unordered` and
- `acquire`.
+[[`load( i )`] [`IU`] [Returns the value stored in `i`. `load` is
+ an __interlocked_operation__.
                                      ] ]
 [[`store( i, c1 )`] [`void`] [Stores the value of `c1` to object `i`.
- This function is an
- __interlocked_operation__ and defaults to
- `release` semantics. Allowable semantics
- for this operation are `unordered` and
- `release`.
+ `store` is an __interlocked_operation__.
                                      ] ]
 ]
 
@@ -64,8 +56,12 @@
   // load headers.
   #include <boost/act/interlocked/load.hpp>
   #include <boost/act/interlocked/load/load.hpp>
- #include <boost/act/interlocked/load/load_acquire.hpp>
+ #include <boost/act/interlocked/load/load_thread_unsafe.hpp>
   #include <boost/act/interlocked/load/load_unordered.hpp>
+ #include <boost/act/interlocked/load/load_acquire.hpp>
+ #include <boost/act/interlocked/load/load_release.hpp>
+ #include <boost/act/interlocked/load/load_acq_rel.hpp>
+ #include <boost/act/interlocked/load/load_sequential.hpp>
   
   // Forward declarations.
   #include <boost/act/interlocked/load_fwd.hpp>

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/integer_models/metafunctions.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -24,14 +24,14 @@
   template< typename LeastInt >
   struct int_fast_t
   {
- typedef ``[~implementation-supplied]`` fast;
+ typedef ``[~unspecified-type]`` fast;
   };
   
   // signed
   template< int Bits >
   struct int_t
   {
- typedef ``[~implementation-supplied]`` least;
+ typedef ``[~unspecified-type]`` least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -39,7 +39,7 @@
   template< int Bits >
   struct uint_t
   {
- typedef ``[~implementation-supplied]`` least;
+ typedef ``[~unspecified-type]`` least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -47,7 +47,7 @@
   template< long MaxValue >
   struct int_max_value_t
   {
- typedef ``[~implementation-supplied]`` least;
+ typedef ``[~unspecified-type]`` least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -55,7 +55,7 @@
   template< long MinValue >
   struct int_min_value_t
   {
- typedef ``[~implementation-supplied]`` least;
+ typedef ``[~unspecified-type]`` least;
     typedef typename int_fast_t< least >::fast fast;
   };
   
@@ -63,8 +63,8 @@
   template< unsigned long Value >
   struct uint_value_t
   {
- typedef ``[~implementation-supplied]`` least;
- typedef typename int_fast_t< least >::fast fast;
+ typedef ``[~unspecified-type]`` least;
+ typedef typename int_fast_t< least >::fast fast;
   };
 
 [heading Model of]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,6 @@
+[section Interlocked Cage Models]
+
+[include interlocked_cage_models/interlocked_memory_cage.qbk]
+[include interlocked_cage_models/interlocked_compiler_cage.qbk]
+
+[endsect]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_compiler_cage.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_compiler_cage.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,19 @@
+[section Interlocked Compiler Cage]
+
+[important The features described on this page are not yet implemented.]
+
+[heading Description]
+
+An __interlocked_cage__ whose instantiations and semantics apply to compiler
+reordering of operations only. Order of visibility of operations with respect to
+other threads of execution is not specified.
+
+[heading Model of]
+
+* __interlocked_cage__
+
+[heading Example]
+
+ToDo: Insert example here
+
+[endsect]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_cage_models/interlocked_memory_cage.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,68 @@
+[section Interlocked Memory Cage]
+
+[important The features described on this page are not yet implemented.]
+
+[heading Description]
+
+An __interlocked_cage__ whose instantiations and semantics apply to both
+compiler reordering of operations as well as order of visibility of operations
+with respect to other threads of execution. Internally, [concept Interlocked
+Memory Cages] often imply low-level memory and compiler barriers during
+construction and/or destruction and therefore should be used sparingly. When
+given the option, one should always prefer to directly apply semantics to their
+operation rather than use a cage. One common use would be to implement a
+user-defined interlocked operation with strict ordering requirements when the
+target system does not provide direct support for such semantics for that
+particular operation.
+
+[heading Model of]
+
+* __interlocked_cage__
+
+[heading Example]
+
+ToDo: Incorporate this into tests
+
+ #include <boost/act/interlocked/memory_cage/memory_cage_sequential.hpp>
+ #include <boost/act/interlocked/memory_cage/memory_cage_acq_rel.hpp>
+ #include <boost/act/interlocked/add_assign/add_assign_unordered.hpp>
+ #include <boost/act/interlocked/add_assign/add_assign_acquire.hpp>
+ #include <boost/act/interlocked/integer/types.hpp>
+
+ int main()
+ {
+ using namespace boost::act::interlocked;
+
+ int_fast32_t var = 0;
+
+ /* ... */
+
+ // The following block turns the contained unordered add_assign into an
+ // add_assign operation with sequential semantics.
+ {
+ memory_cage< sequential > cage;
+
+ add_assign< unordered >( var, 4 );
+ }
+
+ /* ... */
+
+ // The following block turns the contained acquire add_assign into an
+ // add_assign operation with acq_rel semantics. The second template
+ // argument to fence along with the first effectively makes the type
+ // a fence with just release semantics. Since add_assign already
+ // specifies acquire semantics, the resulting operation correctly has
+ // acq_rel semantics without any potential redundant memory barriers.
+ // Leaving the second argument out would also work, but may generate
+ // less efficient code.
+ {
+ memory_cage< acq_rel, acquire > cage;
+
+ add_assign< acquire >( var, 4 );
+ }
+
+ // An add_assign operation with unordered semantics.
+ add_assign< unordered >( var, 4 );
+ }
+
+[endsect]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/interlocked_semantic_models.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,85 @@
+[section Interlocked Semantic Models]
+
+[important The `sequential` and `thread_unsafe` semantics described on this page
+ are not yet implemented.
+]
+
+[heading Description]
+
+The types detailed in this section are the __interlocked_semantic_types__ for
+use with __interlocked_operations__ and __interlocked_barriers__.
+
+[heading Model of]
+
+Each type mentioned above is an __interlocked_semantic_type__.
+
+[important
+If you are unsure as to which semantics you should use for a given situation, it
+is generally safest to use the default semantics of the corresponding operation.
+If efficiency is important for your application, you should prefer to use the
+least-restrictive semantics that you can without breaking allowable ordering of
+visibility between threads.
+]
+
+[table Semantic Types
+[[Type] [Thread-Safe][Ordering Guarantee] ]
+[[`thread_unsafe`] [no] [No atomicity or ordering with respect to
+ multiple threads.
+ [tablenote Useful for generic programming,
+ particular when the requirement for
+ thread-safety is dependent on a template
+ argument.
+ ]
+ ] ]
+[[`unordered`] [yes] [No ordering guarantee.] ]
+[[`acquire`] [yes] [Ensures that all subsequent operations in
+ program order are performed after all preceding
+ loads in program order.
+ ] ]
+[[`release`] [yes] [Ensures that all preceding operations in
+ program order are performed after all
+ subsequent stores in program order.
+ ] ]
+[[`acq_rel`] [yes] [Combines the semantics of `acquire` and
+ `release`.
+ ] ]
+[[`sequential`] [yes] [Ensures that all preceding operations in
+ program order are performed after all
+ subsequent operations in program order.
+ ] ]
+[[`default_`] [] [Uses the default ordering guarantees as
+ specified by the corresponding operation.
+ [tablenote This will likely be removed as all
+ operations should now default to sequential.
+ ]
+ ] ]
+]
+
+[heading Headers]
+
+In general, you should not have to explicitly include the following files in
+order to use [concept Interlocked Operations] and [concept Interlocked
+Barriers], since including the file for the operation implicitly includes the
+corresponding semantics. However, if you wish to create your own operations, you
+would use the headers notated below to bring in the semantic types which are
+necessary.
+
+``
+ // Brings in all semantic types.
+ #include <boost/act/interlocked/semantics.hpp>
+
+ // Fine-grained semantic headers.
+ #include <boost/act/interlocked/semantics/thread_unsafe.hpp>
+ #include <boost/act/interlocked/semantics/unordered.hpp>
+ #include <boost/act/interlocked/semantics/acquire.hpp>
+ #include <boost/act/interlocked/semantics/release.hpp>
+ #include <boost/act/interlocked/semantics/acq_rel.hpp>
+ #include <boost/act/interlocked/semantics/sequential.hpp>
+ #include <boost/act/interlocked/semantics/default.hpp>
+``
+
+[heading Example]
+
+ToDo: Add an example here.
+
+[endsect]

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/doc/interlocked/support/checking_support.qbk 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -12,11 +12,11 @@
 
 [variablelist Notation
 [[[~name]] [The name of an __interlocked_operation__ in =Boost.Act=.] ]
-[[`S`] [A __semantic_type__, as specified without qualification
- and with the exact name as listed in documentation
- (not a typedef name). As an exception, =default_=,
- =default=, and =_= may each be used when specifying default
- semantics.
+[[`S`] [An __interlocked_semantic_type__, as specified without
+ qualification and with the exact name as listed in
+ documentation (not a typedef name). As an exception,
+ =default_=, =default=, and =_= may each be used when
+ specifying default semantics.
                     ] ]
 ]
 

Modified: sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2
==============================================================================
--- sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2 (original)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/Jamfile.v2 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -27,8 +27,8 @@
           [ run interlocked/assign_if_was/assign_if_was.cpp ]
           [ run interlocked/assign_if_was/assign_if_was_acquire.cpp ]
           [ run interlocked/assign_if_was/assign_if_was_release.cpp ]
- #[ run interlocked/assign_if_was/assign_if_was_acq_rel.cpp ]
- #[ run interlocked/assign_if_was/assign_if_was_unordered.cpp ]
+ [ run interlocked/assign_if_was/assign_if_was_acq_rel.cpp ]
+ [ run interlocked/assign_if_was/assign_if_was_unordered.cpp ]
 
           [ run interlocked/add_assign/add_assign.cpp ]
           [ run interlocked/add_assign/add_assign_acquire.cpp ]

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acq_rel.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_acq_rel.cpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+// forcing compound CAS operations to use their default implementation
+// (which is to internally use assign_if_was).
+
+#include <boost/test/minimal.hpp>
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign_acq_rel.cpp"

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_unordered.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/assign_if_was/assign_if_was_unordered.cpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+// Note: These tests could be a little bit better. Currently testing is done by
+// forcing compound CAS operations to use their default implementation
+// (which is to internally use assign_if_was).
+
+#include <boost/test/minimal.hpp>
+
+#define BOOST_ACT_INTERLOCKED_FORCE_DEFAULTS
+
+#include "../add_assign/add_assign_unordered.cpp"

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/cstdatomic.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,564 @@
+/*=============================================================================
+ Copyright (c) 2006, 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_INTERLOCKED_CSTDATOMIC_HPP
+#define BOOST_ACT_INTERLOCKED_CSTDATOMIC_HPP
+
+#include <boost/act/interlocked/store.hpp>
+#include <boost/act/interlocked/load.hpp>
+#include <boost/act/interlocked/add_assign.hpp>
+#include <boost/act/interlocked/subtract_assign.hpp>
+#include <boost/act/interlocked/and_assign.hpp>
+#include <boost/act/interlocked/or_assign.hpp>
+#include <boost/act/interlocked/xor_assign.hpp>
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/act/interlocked/flag.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <cassert>
+#include <cstddef>
+
+namespace boost { namespace act { namespace interlocked { namespace std_atomic {
+
+enum memory_order
+{ memory_order_relaxed
+, memory_order_acquire
+, memory_order_release
+, memory_order_acq_rel
+, memory_order_seq_cst
+};
+
+#define BOOST_ACT_DETAIL_RETURN_CALL_IMPL( macro, name, order, args, data ) \
+switch( order ) \
+{ \
+case memory_order_relaxed: \
+ macro( interlocked::name< unordered > args, data ) \
+ break; \
+case memory_order_acquire: \
+ macro( interlocked::name< acquire > args, data ) \
+ break; \
+case memory_order_release: \
+ macro( interlocked::name< release > args, data ) \
+ break; \
+case memory_order_acq_rel: \
+ macro( interlocked::name< acq_rel > args, data ) \
+ break; \
+case memory_order_seq_cst: \
+ macro( interlocked::name< sequential > args, data ) \
+ break; \
+}
+
+#define BOOST_ACT_DETAIL_CALL_MAC( expression, dummy ) result;
+
+#define BOOST_ACT_DETAIL_RETURN_CALL_MAC( expression, dummy ) return result;
+
+#define BOOST_ACT_DETAIL_CAS_CALL_MAC( expression, type_and_old_val ) \
+BOOST_PP_TUPLE_ELEM( 2, 0 ) expected_val = BOOST_PP_TUPLE_ELEM( 2, 1 ); \
+BOOST_PP_TUPLE_ELEM( 2, 1 ) = expression; \
+return expected_val == BOOST_PP_TUPLE_ELEM( 2, 1 );
+
+#define BOOST_ACT_DETAIL_CALL( name, order, args ) \
+BOOST_ACT_DETAIL_RETURN_CALL_IMPL( BOOST_ACT_DETAIL_CALL_MAC \
+ , name, order, args \
+ )
+
+#define BOOST_ACT_DETAIL_RETURN_CALL( name, order, args ) \
+BOOST_ACT_DETAIL_RETURN_CALL_IMPL( BOOST_ACT_DETAIL_RETURN_CALL_MAC \
+ , name, order, args \
+ )
+
+#define BOOST_ACT_DETAIL_RETURN_CAS_CALL( name, order, args, type, expected ) \
+BOOST_ACT_DETAIL_RETURN_CALL_IMPL( BOOST_ACT_DETAIL_CAS_CALL_MAC \
+ , name, order, args, ( type, expected ) \
+ )
+
+// ToDo: Initialize in constructor to clear (figure out how to guarantee order)
+struct atomic_flag
+ : noncopyable
+{
+public:
+ bool test_and_set( memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( set_if_was_clear, order, ( flag_m ) )
+ }
+
+ void clear( memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_CALL( clear, order, ( flag_m ) )
+ }
+private:
+ interlocked::flag_fast_t flag_m;
+}
+
+inline bool atomic_flag_test_and_set( volatile atomic_flag* target )
+{
+ assert( target != 0 );
+ return target->test_and_set( memory_order_seq_cst );
+}
+
+inline bool atomic_flag_test_and_set_explicit( volatile atomic_flag* target
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->test_and_set( order );
+}
+
+inline void atomic_flag_clear( volatile atomic_flag* target )
+{
+ assert( target != 0 );
+ target->clear( memory_order_seq_cst );
+}
+
+inline void atomic_flag_clear_explicit( volatile atomic_flag* target
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ target->clear( order );
+}
+
+struct atomic_bool
+ : noncopyable
+{
+public:
+ bool lock_free()
+ {
+ return true; // ToDo: Change when emulation is supported.
+ }
+
+ void store( bool val, memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_CALL( store, order, ( bool_m, val ) )
+ }
+
+ bool load( memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( load, order, ( bool_m ) )
+ }
+
+ bool swap( bool val, memory_order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( assign, order, ( bool_m, val ) )
+ }
+
+ bool compare_swap( bool& expected, bool new_val
+ , memory_order order = memory_order_seq_cst
+ ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CAS_CALL( assign_if_was, order
+ , ( bool_m, new_val, expected )
+ , bool, expected
+ )
+ }
+/*
+ void fence( memory_order ) volatile
+ {
+ // ToDo: Define
+ }
+*/
+ //constexpr atomic_bool( bool __v__ );
+
+ bool operator =( bool val ) volatile
+ {
+ store( val );
+ return val;
+ }
+
+ operator bool() volatile
+ {
+ return load();
+ }
+private:
+ interlocked::bool_fast_t bool_m;
+};
+
+inline bool atomic_lock_free( volatile atomic_bool* target )
+{
+ assert( target != 0 );
+ return target->lock_free();
+}
+
+inline void atomic_store( volatile atomic_bool* target, bool val )
+{
+ assert( target != 0 );
+ target->store( val );
+}
+
+inline void atomic_store_explicit( volatile atomic_bool* target, bool val
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ target->store( val, order );
+}
+
+inline bool atomic_load( volatile atomic_bool* target )
+{
+ assert( target != 0 );
+ return target->load();
+}
+
+inline bool atomic_load_explicit( volatile atomic_bool* target, memory_order order )
+{
+ assert( target != 0 );
+ return target->load( order );
+}
+
+inline bool atomic_swap( volatile atomic_bool* target, bool val )
+{
+ assert( target != 0 );
+ return target->swap( val );
+}
+
+inline bool atomic_swap_explicit( volatile atomic_bool* target, bool val
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->swap( val, order );
+}
+
+inline bool atomic_compare_swap( volatile atomic_bool* target
+ , bool* expected, bool val
+ )
+{
+ assert( target != 0 );
+ return target->compare_swap( *expected, val );
+}
+
+inline bool atomic_compare_swap_explicit( volatile atomic_bool* target
+ , bool*, bool val, memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->compare_swap( *expected, val, order );
+}
+
+inline void atomic_fence( volatile atomic_bool* target, memory_order order )
+{
+ assert( target != 0 );
+ // ToDo: Define
+}
+
+struct atomic_address
+ : noncopyable
+{
+ bool lock_free()
+ {
+ return true; // ToDo: Change when emulation is supported.
+ }
+ void store( void* val, memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_CALL( store, order, ( address_m, val ) )
+ }
+
+ void* load( memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( load, order, ( address_m ) )
+ }
+
+ void* swap( void* val, memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( assign, order, ( address_m, val ) )
+ }
+
+ void* compare_swap( void*& expected, void*, new_val
+ , memory_order order = memory_order_seq_cst
+ ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CAS_CALL( assign_if_was, order
+ , ( address_m, new_val, expected )
+ , void*, expected
+ )
+ }
+/*
+ void fence( memory_order ) volatile
+ {
+ // ToDo: Define
+ }
+*/
+ void* fetch_add( std::ptrdiff_t offset
+ , memory_order order = memory_order_seq_cst
+ ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( add_assign, order, ( address_m, offset ) )
+ }
+
+ void* fetch_sub( std::ptrdiff_t offset
+ , memory_order order = memory_order_seq_cst
+ ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( subtract_assign, order, ( address_m,offset ) )
+ }
+
+ //constexpr atomic_address( void* );
+
+ void* operator =( void* address ) volatile
+ {
+ store( address );
+ return address;
+ }
+
+ operator void*() volatile
+ {
+ return load();
+ }
+
+ void* operator +=( std::ptrdiff_t offset ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( add_assign, order, ( address_m,offset ) )
+ }
+
+ void* operator -=( std::ptrdiff_t offset ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( subtract_assign, order, ( address_m,offset ) )
+ }
+private:
+ void* address_m;
+};
+
+inline bool atomic_lock_free( volatile atomic_address* target )
+{
+ assert( target != 0 );
+ return target->lock_free();
+}
+
+inline void atomic_store( volatile atomic_address* target, void* val )
+{
+ assert( target != 0 );
+ target->store( val );
+}
+
+inline void atomic_store_explicit( volatile atomic_address* target, void* val
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ target->store( val, order );
+}
+
+inline void* atomic_load( volatile atomic_address* target )
+{
+ assert( target != 0 );
+ return target->load();
+}
+
+inline void* atomic_load_explicit( volatile atomic_address* target
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->load( order );
+}
+
+inline void* atomic_swap( volatile atomic_address* target, void* val )
+{
+ assert( target != 0 );
+ return target->swap( val );
+}
+
+inline void* atomic_swap_explicit( volatile atomic_address* target, void* val
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->swap( val, order );
+}
+
+inline void* atomic_compare_swap( volatile atomic_address* target
+ , void** expected, void* new_val
+ )
+{
+ assert( target != 0 );
+ return target->compare_swap( *expected, val );
+}
+
+inline void* atomic_compare_swap_explicit( volatile atomic_address* target
+ , void** expected, void* new_val
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->compare_swap( *expected, val, order );
+}
+/*
+inline void atomic_fence( volatile atomic_address* target, memory_order order )
+{
+ assert( target != 0 );
+ // ToDo: Define
+}
+*/
+inline void* atomic_fetch_add( volatile atomic_address* target
+ , std::ptrdiff_t offset
+ )
+{
+ assert( target != 0 );
+ return target->fetch_add( offset );
+}
+
+inline void* atomic_fetch_add_explicit( volatile atomic_address* target
+ , std::ptrdiff_t offset
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->fetch_add( offset, order );
+}
+
+inline void* atomic_fetch_sub( volatile atomic_address* target
+ , std::ptrdiff_t offset
+ )
+{
+ assert( target != 0 );
+ return target->fetch_sub( offset );
+}
+
+inline void* atomic_fetch_sub_explicit( volatile atomic_address* target
+ , std::ptrdiff_t offset
+ , memory_order order
+ )
+{
+ assert( target != 0 );
+ return target->fetch_sub( offset, order );
+}
+
+template< typename T >
+struct atomic
+ : noncopyable
+{
+ bool lock_free() volatile
+ {
+ return true; // ToDo: Change when emulation is supported.
+ }
+
+ void store( T val, memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_CALL( store, order, ( val_m, val ) )
+ }
+
+ T load( memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( load, order, ( val_m ) )
+ }
+
+ T swap( T val, memory_order order = memory_order_seq_cst ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CALL( assign, order, ( val_m, val ) )
+ }
+
+ bool compare_swap( T& expected, T new_val
+ , memory_order order = memory_order_seq_cst
+ ) volatile
+ {
+ BOOST_ACT_DETAIL_RETURN_CAS_CALL( assign_if_was, order
+ , ( val_m, new_val, expected )
+ , T, expected
+ )
+ }
+/*
+ void fence( memory_order ) volatile
+ {
+ //ToDo: Define
+ }
+*/
+ //CPP0X(constexpr) atomic( T __v__ ) : __f__( __v__ ) { }
+
+ T operator =( T val ) volatile
+ {
+ store( val );
+ return val;
+ }
+
+ operator T() volatile
+ {
+ return load();
+ }
+private:
+ T val_m;
+};
+
+//And for each of the integral (character and integer) types listed above,
+
+/*
+#define BOOST_ACT_ATOMIC_INTEGRAL( type ) \
+struct BOOST_PP_CAT( atomic_, type ) \
+ : noncopyable \
+{ \
+ bool lock_free(); \
+ void store( integral, memory_order = memory_order_seq_cst ) volatile; \
+ integral load( memory_order = memory_order_seq_cst ) volatile; \
+ integral swap( integral,
+ memory_order = memory_order_seq_cst ) volatile;
+ bool compare_swap( integral&, integral,
+ memory_order = memory_order_seq_cst ) volatile;
+ void fence( memory_order ) volatile;
+ integral fetch_add( integral,
+ memory_order = memory_order_seq_cst ) volatile;
+ integral fetch_sub( integral,
+ memory_order = memory_order_seq_cst ) volatile;
+ integral fetch_and( integral,
+ memory_order = memory_order_seq_cst ) volatile;
+ integral fetch_or( integral,
+ memory_order = memory_order_seq_cst ) volatile;
+ integral fetch_xor( integral,
+ memory_order = memory_order_seq_cst ) volatile;
+
+ atomic_integral() = default;
+ constexpr atomic_integral( integral );
+ integral operator =( integral ) volatile;
+ operator integral() volatile;
+ integral operator +=( integral ) volatile;
+ integral operator -=( integral ) volatile;
+ integral operator &=( integral ) volatile;
+ integral operator |=( integral ) volatile;
+ integral operator ^=( integral ) volatile;
+private:
+ interlocked::type val_m;
+};
+
+inline bool atomic_lock_free( volatile atomic_integral* );
+inline void atomic_store( volatile atomic_integral*, integral );
+inline void atomic_store_explicit( volatile atomic_integral*, integral, memory_order );
+inline integral atomic_load( volatile atomic_integral* );
+inline integral atomic_load_explicit( volatile atomic_integral*, memory_order );
+inline integral atomic_swap( volatile atomic_integral*, integral );
+inline integral atomic_swap_explicit( volatile atomic_integral*, integral,
+ memory_order );
+inline bool atomic_compare_swap( volatile atomic_integral*, integral*, integral );
+inline bool atomic_compare_swap_explicit( volatile atomic_integral*, integral*,
+ integral, memory_order );
+inline void atomic_fence( volatile atomic_integral*, memory_order ) volatile;
+inline integral atomic_fetch_add( volatile atomic_integral*, integral );
+inline integral atomic_fetch_add_explicit( volatile atomic_integral*, integral,
+ memory_order );
+inline integral atomic_fetch_sub( volatile atomic_integral*, integral );
+inline integral atomic_fetch_sub_explicit( volatile atomic_integral*, integral,
+ memory_order );
+inline integral atomic_fetch_and( volatile atomic_integral*, integral );
+inline integral atomic_fetch_and_explicit( volatile atomic_integral*, integral,
+ memory_order );
+inline integral atomic_fetch_or( volatile atomic_integral*, integral );
+inline integral atomic_fetch_or_explicit( volatile atomic_integral*, integral,
+ memory_order );
+inline integral atomic_fetch_xor( volatile atomic_integral*, integral );
+inline integral atomic_fetch_xor_explicit( volatile atomic_integral*, integral,
+ memory_order );
+*/
+
+#undef BOOST_ACT_DETAIL_RETURN_CAS_CALL
+#undef BOOST_ACT_DETAIL_RETURN_CALL
+#undef BOOST_ACT_DETAIL_CALL
+#undef BOOST_ACT_DETAIL_CAS_CALL_MAC
+#undef BOOST_ACT_DETAIL_RETURN_CALL_MAC
+#undef BOOST_ACT_DETAIL_CALL_MAC
+#undef BOOST_ACT_DETAIL_RETURN_CALL_IMPL
+
+} } } }
+
+#endif

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/interlocked_integer_types.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/interlocked_integer_types.hpp 2007-07-11 21:02:20 EDT (Wed, 11 Jul 2007)
@@ -0,0 +1,87 @@
+/*=============================================================================
+ Copyright (c) 2007 Matthew Calabrese
+
+ Use, modification and distribution is subject to 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)
+==============================================================================*/
+
+#ifndef BOOST_ACT_TEST_INTERLOCKED_INTERLOCKED_INTEGER_TYPES_HPP
+#define BOOST_ACT_TEST_INTERLOCKED_INTERLOCKED_INTEGER_TYPES_HPP
+
+#include <boost/act/interlocked/integer/types.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/joint_view.hpp>
+#include <boost/act/config/interlocked/has_int.hpp>
+
+typedef boost::mpl::vector<
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 8 )
+
+boost::act::interlocked::int_fast8_t;
+boost::act::interlocked::int_least8_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 16 )
+
+boost::act::interlocked::int_fast16_t;
+boost::act::interlocked::int_least16_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 32 )
+
+boost::act::interlocked::int_fast32_t;
+boost::act::interlocked::int_least32_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_INT_LEAST( 64 )
+
+boost::act::interlocked::int_fast64_t;
+boost::act::interlocked::int_least64_t;
+
+#endif
+
+> signed_interlocked_ints;
+
+
+typedef boost::mpl::vector<
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 8 )
+
+boost::act::interlocked::uint_fast8_t;
+boost::act::interlocked::uint_least8_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 16 )
+
+boost::act::interlocked::uint_fast16_t;
+boost::act::interlocked::uint_least16_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 32 )
+
+boost::act::interlocked::uint_fast32_t;
+boost::act::interlocked::uint_least32_t;
+
+#endif
+
+#if BOOST_ACT_INTERLOCKED_HAS_UINT_LEAST( 64 )
+
+boost::act::interlocked::uint_fast64_t;
+boost::act::interlocked::uint_least64_t;
+
+#endif
+
+> unsigned_interlocked_ints;
+
+typedef boost::mpl::joint_view< signed_interlocked_ints
+ , unsigned_interlocked_ints
+ >
+ all_interlocked_ints;
+
+#endif

Added: sandbox/SOC/2006/concurrency/trunk/libs/act/test/interlocked/multiply_assign/multiply_assign.cpp
==============================================================================


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk