Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
latch.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Contact: Piotr Bartosiewicz <p.bartosiewi@partner.samsung.com>
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 
25 #ifndef COMMON_UTILS_LATCH_HPP
26 #define COMMON_UTILS_LATCH_HPP
27 
28 #include <mutex>
29 #include <condition_variable>
30 
31 
32 namespace utils {
33 
34 
41 class Latch {
42 public:
43  Latch();
44 
48  void set();
49 
53  void wait();
54 
61  bool wait(const unsigned int timeoutMs);
62 
68  void waitForN(const unsigned int n);
69 
77  bool waitForN(const unsigned int n, const unsigned int timeoutMs);
78 
82  bool empty();
83 private:
84  std::mutex mMutex;
85  std::condition_variable mCondition;
86  unsigned int mCount;
87 };
88 
89 
90 } // namespace utils
91 
92 
93 #endif // COMMON_UTILS_LATCH_HPP
std::condition_variable mCondition
Definition: latch.hpp:85
A synchronization aid that allows one thread to wait until an operation being performed in other thre...
Definition: latch.hpp:41
void set()
Sets an event occurred.
Definition: latch.cpp:39
bool empty()
Check if there are no pending events.
Definition: latch.cpp:75
Latch()
Definition: latch.cpp:34
std::mutex mMutex
Definition: latch.hpp:84
unsigned int mCount
Definition: latch.hpp:86
void wait()
Waits for a single occurrence of event.
Definition: latch.cpp:46
void waitForN(const unsigned int n)
Waits for occurrences of event.
Definition: latch.cpp:56