12345678910111213141516171819202122232425262728293031323334353637 |
- #ifndef BOOST_COMPUTE_DETAIL_GLOBAL_STATIC_HPP
- #define BOOST_COMPUTE_DETAIL_GLOBAL_STATIC_HPP
- #include <boost/compute/config.hpp>
- #ifdef BOOST_COMPUTE_THREAD_SAFE
- # ifdef BOOST_COMPUTE_HAVE_THREAD_LOCAL
-
- # define BOOST_COMPUTE_DETAIL_GLOBAL_STATIC(type, name, ctor) \
- thread_local type name ctor;
- # else
-
- # include <boost/thread/tss.hpp>
- # define BOOST_COMPUTE_DETAIL_GLOBAL_STATIC(type, name, ctor) \
- static ::boost::thread_specific_ptr< type > BOOST_PP_CAT(name, _tls_ptr_); \
- if(!BOOST_PP_CAT(name, _tls_ptr_).get()){ \
- BOOST_PP_CAT(name, _tls_ptr_).reset(new type ctor); \
- } \
- static type &name = *BOOST_PP_CAT(name, _tls_ptr_);
- # endif
- #else
-
- # define BOOST_COMPUTE_DETAIL_GLOBAL_STATIC(type, name, ctor) \
- static type name ctor;
- #endif
- #endif
|