1*635a8641SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_BARRIER_CLOSURE_H_ 6*635a8641SAndroid Build Coastguard Worker #define BASE_BARRIER_CLOSURE_H_ 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Worker #include "base/base_export.h" 9*635a8641SAndroid Build Coastguard Worker #include "base/callback.h" 10*635a8641SAndroid Build Coastguard Worker 11*635a8641SAndroid Build Coastguard Worker namespace base { 12*635a8641SAndroid Build Coastguard Worker 13*635a8641SAndroid Build Coastguard Worker // BarrierClosure executes |done_closure| after it has been invoked 14*635a8641SAndroid Build Coastguard Worker // |num_closures| times. 15*635a8641SAndroid Build Coastguard Worker // 16*635a8641SAndroid Build Coastguard Worker // If |num_closures| is 0, |done_closure| is executed immediately. 17*635a8641SAndroid Build Coastguard Worker // 18*635a8641SAndroid Build Coastguard Worker // BarrierClosure is thread-safe - the count of remaining closures is 19*635a8641SAndroid Build Coastguard Worker // maintained as a base::AtomicRefCount. |done_closure| will be run on 20*635a8641SAndroid Build Coastguard Worker // the thread that calls the final Run() on the returned closures. 21*635a8641SAndroid Build Coastguard Worker // 22*635a8641SAndroid Build Coastguard Worker // |done_closure| is also cleared on the final calling thread. 23*635a8641SAndroid Build Coastguard Worker BASE_EXPORT RepeatingClosure BarrierClosure(int num_closures, 24*635a8641SAndroid Build Coastguard Worker OnceClosure done_closure); 25*635a8641SAndroid Build Coastguard Worker 26*635a8641SAndroid Build Coastguard Worker } // namespace base 27*635a8641SAndroid Build Coastguard Worker 28*635a8641SAndroid Build Coastguard Worker #endif // BASE_BARRIER_CLOSURE_H_ 29