C++11 library providing functionality common to all adapters.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.0 KiB

#include <mutex>
#include <condition_variable>
namespace pEp {
class Semaphore {
std::mutex mtx;
std::condition_variable cv;
// Atomic types are types that encapsulate a value whose access is guaranteed
// to not cause data races and can be used to synchronize memory accesses among
// different threads.
// To synchronize threads, ALWAYS use <atomic> types
std::atomic_bool _stop;
Semaphore() : _stop(false) { }
void stop()
std::unique_lock<std::mutex> lock(mtx);
void try_wait()
std::unique_lock<std::mutex> lock(mtx);
if (!_stop.load()) {
while(_stop.load()) {
void go()
std::unique_lock<std::mutex> lock(mtx);