Sha256: a37e4f643ba58a3a200b7e32fbf13d69d8fb8751b5caba136c7ff4c8f6d1762d

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

#ifndef LIMONP_MUTEX_LOCK_HPP
#define LIMONP_MUTEX_LOCK_HPP

#include <pthread.h>
#include "NonCopyable.hpp"
#include "HandyMacro.hpp"

namespace Limonp
{
    class MutexLock: NonCopyable
    {
        private:
            pthread_mutex_t mutex_;
        public:
            pthread_mutex_t* getPthreadMutex()
            {
                return &mutex_;
            }
        public:
            MutexLock()
            {
                LIMONP_CHECK(!pthread_mutex_init(&mutex_, NULL));
            }
            ~MutexLock()
            {
                LIMONP_CHECK(!pthread_mutex_destroy(&mutex_));
            }
        private:
            void lock()
            {
                LIMONP_CHECK(!pthread_mutex_lock(&mutex_));
            }
            void unlock()
            {
                LIMONP_CHECK(!pthread_mutex_unlock(&mutex_));
            }
            friend class MutexLockGuard;
    };
    class MutexLockGuard: NonCopyable
    {
        public:
            explicit MutexLockGuard(MutexLock & mutex)
                : mutex_(mutex)
            {
                mutex_.lock();
            }
            ~MutexLockGuard()
            {
                mutex_.unlock();
            }
        private:
            MutexLock & mutex_;
    };
#define MutexLockGuard(x) assert(false);
}

#endif

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jieba_rb-0.0.5 ext/cppjieba/src/Limonp/MutexLock.hpp
jieba_rb-0.0.2 ext/cppjieba/src/Limonp/MutexLock.hpp
jieba_rb-0.0.1 ext/cppjieba/src/Limonp/MutexLock.hpp