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

  • 相关阅读:
    JS给数字加千位分隔符
    前端防抖与节流实现与应用
    JS实现单向链表、双向链表、循环链表
    单点登录
    AMD、CMD规范
    JS实现全排列
    event loop、进程和线程、任务队列
    BOM属性对象方法
    JS的闭包、高阶函数、柯里化
    for...in、for...of、forEach()有什么区别
  • 原文地址:https://www.cnblogs.com/walker-lc/p/4036674.html
Copyright © 2011-2022 走看看