/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ #pragma once namespace executorch::extension::threadpool { // A RAII, thread local (!) guard that enables or disables guard upon // construction, and sets it back to the original value upon destruction. struct NoThreadPoolGuard { static bool is_enabled(); static void set_enabled(bool enabled); NoThreadPoolGuard() : prev_mode_(NoThreadPoolGuard::is_enabled()) { NoThreadPoolGuard::set_enabled(true); } ~NoThreadPoolGuard() { NoThreadPoolGuard::set_enabled(prev_mode_); } private: const bool prev_mode_; }; } // namespace executorch::extension::threadpool namespace torch::executorch::threadpool { // DEPRECATED // TODO(T197294990): Remove these deprecated aliases once all users have moved // to the new `::executorch` namespaces. Note that threadpool incorrectly used // the namespace `torch::executorch` instead of `torch::executor`. using ::executorch::extension::threadpool::NoThreadPoolGuard; // DEPRECATED } // namespace torch::executorch::threadpool