]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/memory_order.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
1c8bdc681c744182788431dff379a2e231fdcc75
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / memory_order.hpp
1 #ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED\r
2 #define BOOST_MEMORY_ORDER_HPP_INCLUDED\r
3 \r
4 // MS compatible compilers support #pragma once\r
5 \r
6 #if defined(_MSC_VER) && (_MSC_VER >= 1020)\r
7 # pragma once\r
8 #endif\r
9 \r
10 //  boost/memory_order.hpp\r
11 //\r
12 //  Defines enum boost::memory_order per the C++0x working draft\r
13 //\r
14 //  Copyright (c) 2008, 2009 Peter Dimov\r
15 //\r
16 //  Distributed under the Boost Software License, Version 1.0.\r
17 //  See accompanying file LICENSE_1_0.txt or copy at\r
18 //  http://www.boost.org/LICENSE_1_0.txt)\r
19 \r
20 \r
21 namespace boost\r
22 {\r
23 \r
24 //\r
25 // Enum values are chosen so that code that needs to insert\r
26 // a trailing fence for acquire semantics can use a single\r
27 // test such as:\r
28 //\r
29 // if( mo & memory_order_acquire ) { ...fence... }\r
30 //\r
31 // For leading fences one can use:\r
32 //\r
33 // if( mo & memory_order_release ) { ...fence... }\r
34 //\r
35 // Architectures such as Alpha that need a fence on consume\r
36 // can use:\r
37 //\r
38 // if( mo & ( memory_order_acquire | memory_order_consume ) ) { ...fence... }\r
39 //\r
40 \r
41 enum memory_order\r
42 {\r
43     memory_order_relaxed = 0,\r
44     memory_order_acquire = 1,\r
45     memory_order_release = 2,\r
46     memory_order_acq_rel = 3, // acquire | release\r
47     memory_order_seq_cst = 7, // acq_rel | 4\r
48     memory_order_consume = 8\r
49 };\r
50 \r
51 } // namespace boost\r
52 \r
53 #endif // #ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED\r