1 // Copyright 2019 The TensorFlow Authors. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // ============================================================================== 15 16 #ifndef TENSORFLOW_COMPILER_XLA_PYTHON_TPU_DRIVER_PLATFORM_EXTERNAL_COMPAT_H_ 17 #define TENSORFLOW_COMPILER_XLA_PYTHON_TPU_DRIVER_PLATFORM_EXTERNAL_COMPAT_H_ 18 19 #include <thread> // NOLINT 20 21 #include "absl/strings/string_view.h" 22 23 namespace tpu_driver { 24 25 class Thread { 26 public: 27 template <class Function, class... Args> Thread(Function && f,Args &&...args)28 explicit Thread(Function&& f, Args&&... args) 29 : thread_(std::forward<Function>(f), std::forward<Args>(args)...) {} join()30 void join() { thread_.join(); } 31 32 private: 33 std::thread thread_; 34 }; 35 36 class TraceMe { 37 public: 38 explicit TraceMe(absl::string_view name, int level = 1) {} 39 explicit TraceMe(std::string&& name, int level = 1) = delete; 40 explicit TraceMe(const std::string& name, int level = 1) = delete; 41 explicit TraceMe(const char* raw, int level = 1) TraceMe(absl::string_view (raw),level)42 : TraceMe(absl::string_view(raw), level) {} 43 template <typename NameGeneratorT> 44 explicit TraceMe(NameGeneratorT name_generator, int level = 1) {} ~TraceMe()45 ~TraceMe() {} 46 }; 47 48 } // namespace tpu_driver 49 50 #endif // TENSORFLOW_COMPILER_XLA_PYTHON_TPU_DRIVER_PLATFORM_EXTERNAL_COMPAT_H_ 51