Sha256: fb96d4313c1915ab3c4ce3727c7d68520c739d03ae656d6c3a90aa0575a70b65

Contents?: true

Size: 1008 Bytes

Versions: 3

Compression:

Stored size: 1008 Bytes

Contents

/*
 * https://github.com/chenshuo/muduo/blob/master/muduo/base/Condition.h
 */

#ifndef LIMONP_CONDITION_HPP
#define LIMONP_CONDITION_HPP

#include "MutexLock.hpp"

namespace Limonp
{
    class Condition : NonCopyable
    {
        public:
            explicit Condition(MutexLock& mutex)
                : mutex_(mutex)
            {
                LIMONP_CHECK(!pthread_cond_init(&pcond_, NULL));
            }

            ~Condition()
            {
                LIMONP_CHECK(!pthread_cond_destroy(&pcond_));
            }

            void wait()
            {
                LIMONP_CHECK(!pthread_cond_wait(&pcond_, mutex_.getPthreadMutex()));
            }

            void notify()
            {
                LIMONP_CHECK(!pthread_cond_signal(&pcond_));
            }

            void notifyAll()
            {
                LIMONP_CHECK(!pthread_cond_broadcast(&pcond_));
            }

        private:
            MutexLock& mutex_;
            pthread_cond_t pcond_;
    };

}

#endif

Version data entries

3 entries across 3 versions & 1 rubygems

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