1 #ifndef LIBJMMCG_CORE_THREAD_API_TRAITS_HPP
2 #define LIBJMMCG_CORE_THREAD_API_TRAITS_HPP
23 # pragma warning(disable:4786
)
44 struct api_lock_traits;
47 struct critical_section;
66 struct api_lock_traits<platform_api, sequential_mode> {
101 using atomic_counter_type=atomic_ctr<V, api_lock_traits<api_type, model_type>>;
105 using atomic=atomic_ctr<V, api_lock_traits<api_type, model_type>>;
106 using timeout_type=
int;
115 return std::numeric_limits<timeout_type>::max();
125 typedef api_lock_traits<platform_api, sequential_mode>
lock_traits;
127 struct critical_section
final :
public lock::lockable<lock_traits> {
130 using lock_traits=base_t::lock_traits;
177 class anon_event
final :
public lock::lockable_settable<lock_traits> {
183 typedef lock_traits::timeout_type timeout_type;
222 static lock_type::atomic_t lk;
227 atomic_state_type fudge;
233 struct api_threading_traits {
238 using demangled_name_t=
std::array<
char, 16384>;
244 static void raise(
int sig)
noexcept(
true);
279 static void __fastcall demangle_name(
char const *
const mangled_name, demangled_name_t &demangled_name)
noexcept(
true);
280 static demangled_name_t
__fastcall demangle_name(
std::type_info
const &mangled_type)
noexcept(
true);
309 # include "../experimental/NT-based/NTSpecific/thread_api_traits.hpp"
310 # include "../experimental/NT-based/NTSpecific/NTLocking.hpp"
311 #elif defined(__unix__
)
312 # include "../unix/thread_api_traits.hpp"
313 # include "../unix/posix_locking.hpp"