pthread_wrap.h

时间:2022-12-10 20:45:58

#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

pthread_wrap.h的更多相关文章

  1. APUE中fcntl&period;h的使用及O&lowbar;SYNC在Mac与Ubuntu下的测试

    此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...

  2. 关于apue&period;3e中apue&period;h的使用

    关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...

  3. YYModel 源码解读(二)之NSObject&plus;YYModel&period;h &lpar;1&rpar;

    本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...

  4. YYModel 源码解读(一)之YYModel&period;h

    #if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...

  5. error RC1015&colon; cannot open include file &&num;39&semi;afxres&period;h&&num;39&semi; 解决办法

    在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...

  6. afxcomctl32&period;h与afxcomctl32&period;inl报错

    afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...

  7. C标准头文件&lt&semi;math&period;h&gt&semi;

    定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ...

  8. C标准头文件&lt&semi;ctype&period;h&gt&semi;

    主要包括了一些字符识别和转换函数 字符判断 isalnum() //函数原型 #include<ctype.h> int isalum(int c); 功能:如果输入的字符是字母(alph ...

  9. xcode中的&period;h和&period;m文件分别是什么意思?各有什么用?

    .h 表示头文件,用来声明各种成员变量,方法,属性之类的.在import的时候用头文件. .m 主要用来实现.h 里声明的方法.举个例子,如果要写一个方法,你要在.h里先声明: - (void)myM ...

随机推荐

  1. 当编译CCBReader时出现 &OpenCurlyDoubleQuote; CCBAnimationManager&period;m Use of undeclared identifier &&num;39&semi;other&OpenCurlyQuote; ” 解决方法

    第一种解决方法是去github上下载最新的CCBReader 第二种解决方法是把other替换成self.inner 建议用新版本的

  2. ubuntu 下搭建vsftp

    1. 安装:sudo apt-get install vsftpd 2. 我的目的是建立个ftp,专门的账户访问,账户不可以登陆.不允许匿名登陆 3. 更改配置文件/etc/vsftpd.conf l ...

  3. &lbrack;置顶&rsqb; 深入浅出MongoDB(三)环境搭建

    上次的博文深入浅出MongoDB(二)概述中我们已经将MongoDB的相关概念讲解了一下,接下来我们继续进行MongoDB学习.在学习之前,大家首先需要在自己的电脑上安装MongoDB. 1.安装 安 ...

  4. windows phone 7 通过Post提交URL到服务器&comma;从服务器获取数据&lpar;比如登陆时候使用&rpar;

    原文:windows phone 7 通过Post提交URL到服务器,从服务器获取数据(比如登陆时候使用) HttpWebRequest myRequest = (HttpWebRequest)Web ...

  5. 2018OKR年中回顾

    一.2018OKR规划 目标1.温习专业基础知识 关键结果1.1 阅读<微积分之屠龙宝刀>+<微积分之倚天宝剑>,加深理解高等数学微积分的各种概念与公式(0.2 屠龙宝刀看了三 ...

  6. 【转载】 pytorch笔记:06&rpar;requires&lowbar;grad和volatile

    原文地址: https://blog.csdn.net/jiangpeng59/article/details/80667335 作者:PJ-Javis 来源:CSDN --------------- ...

  7. SQLServer&&num;160&semi;2005Windows验证如何改为混合模式验证

    SQL Server 2005 Windows验证如何改为混合模式验证[摘] by:授客 QQ:1033553122 默认情况下,SQL Server 2005 Express是采用集成的Window ...

  8. ztree默认自动打开第一级

    var treeObj = $.fn.zTree.getZTreeObj("tree"); var nodes = treeObj.getNodes(); if (nodes.le ...

  9. 比特币 Bitcoin 是什么,我勒个去,哈耶克果然超前——货币的非国有化,容我思量一下【转载&plus;整理】

    原文地址 比特币矿业史(上):故事的开始,CPU 时代 比特币矿业史(中):群众的觉醒 ,GPU 时代 比特币矿业史(下):巨头的诞生 ,ASIC 时代 本文内容 引子 0 序 1 故事的开始 : C ...

  10. 怎样彻底卸载&lpar;删除&rpar;SQL server2000

    如何完全卸载SQL server 2000 一.卸载安装程序:找到电脑右下角的Windows开始按钮,找到控制面板——卸载程序. 找到server 2000的安装程序,并点击后面的卸载按钮.  是,确 ...

相关文章