#pragma once

#include "ehs/EHS.h"
#include "BaseMutex.h"

#include <pthread.h>

namespace ehs
{
    class Mutex : public BaseMutex
    {
    private:
        pthread_mutex_t hdl;

    public:
        ~Mutex() override;

        Mutex();

		Mutex(const Mutex& mutex);

        Mutex& operator=(const Mutex& mutex);

        void Initialize() override;

        void UnInitialize() override;

        void Lock() override;

        void Unlock() override;
    };
}