semaphore.h
Go to the documentation of this file.
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* semaphore.h - General-purpose counting semaphore
*/
#ifndef __LIBCAMERA_INTERNAL_SEMAPHORE_H__
#define __LIBCAMERA_INTERNAL_SEMAPHORE_H__
#include <condition_variable>
#include "libcamera/internal/thread.h"
namespace libcamera {
class Semaphore
{
public:
Semaphore(unsigned int n = 0);
unsigned int available();
void acquire(unsigned int n = 1);
bool tryAcquire(unsigned int n = 1);
void release(unsigned int n = 1);
private:
Mutex mutex_;
std::condition_variable cv_;
unsigned int available_;
};
} /* namespace libcamera */
#endif /* __LIBCAMERA_INTERNAL_SEMAPHORE_H__ */
libcamera::Semaphore
General-purpose counting semaphore.
Definition: semaphore.h:17
libcamera::Semaphore::tryAcquire
bool tryAcquire(unsigned int n=1)
Try to acquire n resources without blocking.
Definition: semaphore.cpp:75
libcamera::Semaphore::Semaphore
Semaphore(unsigned int n=0)
Construct a semaphore with n resources.
Definition: semaphore.cpp:34
libcamera::Semaphore::available
unsigned int available()
Retrieve the number of available resources.
Definition: semaphore.cpp:43
libcamera::Semaphore::acquire
void acquire(unsigned int n=1)
Acquire n resources.
Definition: semaphore.cpp:57
libcamera::Semaphore::release
void release(unsigned int n=1)
Release n resources.
Definition: semaphore.cpp:93
thread.h
Thread support.
libcamera::Mutex
std::mutex Mutex
An alias for std::mutex.
Definition: thread.h:27