libcamera  v0.0.0
Supporting cameras in Linux since 2019
semaphore.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2019, Google Inc.
4  *
5  * semaphore.h - General-purpose counting semaphore
6  */
7 #ifndef __LIBCAMERA_INTERNAL_SEMAPHORE_H__
8 #define __LIBCAMERA_INTERNAL_SEMAPHORE_H__
9 
10 #include <condition_variable>
11 
13 
14 namespace libcamera {
15 
16 class Semaphore
17 {
18 public:
19  Semaphore(unsigned int n = 0);
20 
21  unsigned int available();
22  void acquire(unsigned int n = 1);
23  bool tryAcquire(unsigned int n = 1);
24  void release(unsigned int n = 1);
25 
26 private:
27  Mutex mutex_;
28  std::condition_variable cv_;
29  unsigned int available_;
30 };
31 
32 } /* namespace libcamera */
33 
34 #endif /* __LIBCAMERA_INTERNAL_SEMAPHORE_H__ */
General-purpose counting semaphore.
Definition: semaphore.h:17
bool tryAcquire(unsigned int n=1)
Try to acquire n resources without blocking.
Definition: semaphore.cpp:75
Semaphore(unsigned int n=0)
Construct a semaphore with n resources.
Definition: semaphore.cpp:34
unsigned int available()
Retrieve the number of available resources.
Definition: semaphore.cpp:43
void acquire(unsigned int n=1)
Acquire n resources.
Definition: semaphore.cpp:57
void release(unsigned int n=1)
Release n resources.
Definition: semaphore.cpp:93
Thread support.
std::mutex Mutex
An alias for std::mutex.
Definition: thread.h:27