33 static std::vector<const pthread_t *> threads;
39 if (threads.empty()) {
40 static pthread_t main_thread_id = pthread_self();
41 threads.push_back(&main_thread_id);
42 for (
auto t = 0ul; t != ::madness::ThreadPool::size(); ++t) {
43 threads.push_back(&(::madness::ThreadPool::get_threads()[t].get_id()));
53#if defined(HAVE_INTEL_TBB)
55 "WARNING: watchpoints are only supported with MADWorld using the legacy threadpool");
57#if !defined(__APPLE__)
static std::shared_ptr< Pool > instance()
accesses the unique pool; asserts that the default instance has been initialized by calling initializ...
static void initialize_instance(const std::vector< const pthread_t * > &threads)
const std::vector< const pthread_t * > & watchpoints_threads()
this contains MADNESS-based TTG functionality
void initialize_watchpoints()
must be called from main thread before setting watchpoints
void watchpoint_clear(T *addr)
clears the hardware watchpoint for window [addr,addr+size) previously created with watchpoint_set<T>
void watchpoint_set(T *addr, ttg::detail::MemoryWatchpoint_x86_64::Size size, ttg::detail::MemoryWatchpoint_x86_64::Condition cond)
sets a hardware watchpoint for window [addr,addr+size) and condition cond
World default_execution_context()
Accesses the default backend's default execution context.
void print_error(const T &t, const Ts &... ts)
atomically prints to std::cerr a sequence of items (separated by ttg::print_separator) followed by st...