Equivalent to CountDownLatch

For some parallel programs, I could use the Java concept of CountDownLatch . Is there an equivalent for C ++ 11 or what would this concept be called in C ++?

I want to call a function after the count reaches zero.

If not already, I would write myself a class like the following:

class countdown_function { public: countdown_function( size_t count ); countdown_function( const countdown_function& ) = default; countdown_function( countdown_function&& ) = default; countdown_function& operator=( const countdown_function& ) = default; countdown_function& operator=( countdown_function&& ) = default; // Callback to be invoked countdown_function& operator=(std::function<void()> callback); countdown_function& operator--(); private: struct internal { std::function<void()> _callback; size_t _count; // + some concurrent handling }; // Make sure this class can be copied but still references // same state std::shared_ptr<internal> _state; }; 

Is something like this already available anywhere?

Scenario:

 countdown_function counter( 2 ); counter = [success_callback]() { success_callback(); }; startTask1Async( [counter, somework]() { somework(); --counter; }, errorCallback ); startTask2Async( [counter, otherwork]() { otherwork(); --counter; }, errorCallback ); 
+6
source share

All Articles