// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_THREADING_THREAD_TYPE_DELEGATE_H_ #define BASE_THREADING_THREAD_TYPE_DELEGATE_H_ #include "base/base_export.h" #include "base/threading/platform_thread.h" namespace base { // A ThreadTypeDelegate can intercept thread type changes. This can be used to // adjust thread properties via another process when the current process can't // directly adjust them (e.g. due to sandbox restrictions). class BASE_EXPORT ThreadTypeDelegate { public: ThreadTypeDelegate(); ThreadTypeDelegate(const ThreadTypeDelegate&) = delete; ThreadTypeDelegate& operator=(const ThreadTypeDelegate&) = delete; virtual ~ThreadTypeDelegate(); // Invoked on thread type change. Returns true if the delegate handles // adjusting thread properties (i.e. //base code will not adjust thread // properties such as nice value, c-group, latency sensitivity...). virtual bool HandleThreadTypeChange(PlatformThreadId thread_id, ThreadType thread_type) = 0; }; } // namespace base #endif // BASE_THREADING_THREAD_TYPE_DELEGATE_H_