zoukankan      html  css  js  c++  java
  • pthread_wrap.h

    #ifndef _PTHREAD_WRAP_H
    #define _PTHREAD_WRAP_H
    #include <pthread.h>

    class hm_pthread_mutex
    {
    public:
    hm_pthread_mutex()
    {
    pthread_mutex_init(&m_mutex, 0);
    }
    ~hm_pthread_mutex()
    {
    pthread_mutex_destroy(&m_mutex);
    }

    inline void lock()
    {
    pthread_mutex_lock(&m_mutex);
    }
    inline void unlock()
    {
    pthread_mutex_unlock(&m_mutex);
    }

    private:
    pthread_mutex_t m_mutex;
    };

    class hm_pthread_rwlock
    {
    public:
    hm_pthread_rwlock()
    {
    pthread_rwlock_init(&m_rwlock, 0);
    }
    ~hm_pthread_rwlock()
    {
    pthread_rwlock_destroy(&m_rwlock);
    }

    inline void rdlock()
    {
    pthread_rwlock_rdlock(&m_rwlock);
    }
    inline void wrlock()
    {
    pthread_rwlock_wrlock(&m_rwlock);
    }
    inline void unlock()
    {
    pthread_rwlock_unlock(&m_rwlock);
    }

    private:
    pthread_rwlock_t m_rwlock;
    };

    class hm_pthread_cond
    {
    public:
    hm_pthread_cond()
    {
    m_complete = false;
    pthread_mutex_init(&m_mutex, 0);
    pthread_cond_init(&m_cond, 0);
    }

    ~hm_pthread_cond()
    {
    pthread_mutex_destroy(&m_mutex);
    pthread_cond_destroy(&m_cond);
    }

    inline void wait()
    {
    pthread_mutex_lock(&m_mutex);

    m_complete = false;
    while (!m_complete)
    pthread_cond_wait(&m_cond, &m_mutex);

    pthread_mutex_unlock(&m_mutex);
    }

    inline void notify(bool complete=true)
    {
    pthread_mutex_lock(&m_mutex);

    m_complete = complete;
    pthread_cond_signal(&m_cond);

    pthread_mutex_unlock(&m_mutex);
    }

    private:
    bool m_complete;
    pthread_mutex_t m_mutex;
    pthread_cond_t m_cond;
    };

    #endif//_PTHREAD_WRAP_H

  • 相关阅读:
    fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
    cvWaitKey 如果 cvNamedWindow就不会起作用
    Java 并发基础
    简化Getter 与 Setter 的插件 Lombok
    20、状态模式
    mybatis-generator 覆盖新增XML
    Jvm 虚拟机
    18、备忘录设计模式
    16、 观察者设计模式
    08、仲载者 -中间者模式
  • 原文地址:https://www.cnblogs.com/walker-lc/p/4036674.html
Copyright © 2011-2022 走看看