1 /* 2 * Copyright (C) 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "TaskQueue.h" 18 19 namespace android { 20 namespace os { 21 namespace dumpstate { 22 ~TaskQueue()23TaskQueue::~TaskQueue() { 24 run(/* do_cancel = */true); 25 } 26 run(bool do_cancel)27void TaskQueue::run(bool do_cancel) { 28 std::unique_lock lock(lock_); 29 while (!tasks_.empty()) { 30 auto task = tasks_.front(); 31 tasks_.pop(); 32 lock.unlock(); 33 std::invoke(task, do_cancel); 34 lock.lock(); 35 } 36 } 37 38 } // namespace dumpstate 39 } // namespace os 40 } // namespace android 41