Skip to content

Instantly share code, notes, and snippets.

@yuyoyuppe
Created February 12, 2020 12:31
Show Gist options
  • Save yuyoyuppe/3c7332a01f835990a4439bebbfbedd81 to your computer and use it in GitHub Desktop.
Save yuyoyuppe/3c7332a01f835990a4439bebbfbedd81 to your computer and use it in GitHub Desktop.
#pragma once
#include <mutex>
struct polymorphic_mutex
{
virtual void lock() = 0;
virtual void unlock() = 0;
virtual bool try_lock() = 0;
};
class recursive_polymorphic_mutex : public polymorphic_mutex
{
std::recursive_mutex mutex;
public:
virtual void lock() override
{
mutex.lock();
}
virtual void unlock() override
{
mutex.unlock();
}
virtual bool try_lock() override
{
return mutex.try_lock();
}
};
struct polymorphic_null_mutex : polymorphic_mutex
{
virtual void lock() override {}
virtual void unlock() override {}
virtual bool try_lock() override {return true;}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment