一个简单但很好用的线程锁
来源:互联网 发布:网络变压器引脚定义 编辑:程序博客网 时间:2024/05/16 13:06
#ifndef __LOCK_H__
#define __LOCK_H__
#ifdef _WIN32
#include <WinSock2.h>
#else
#include <pthread.h>
#endif
class CLock
{
public:
class CMutex
{
friend class CLock;
public:
CMutex()
{
#ifdef _WIN32
InitializeCriticalSection(&m_cs);
#else
pthread_mutex_init(&m_tmt, NULL);
#endif
}
~CMutex()
{
#ifdef _WIN32
DeleteCriticalSection(&m_cs);
#else
pthread_mutex_destroy(&m_tmt);
#endif
}
private:
void lock()
{
#ifdef _WIN32
EnterCriticalSection(&m_cs);
#else
pthread_mutex_lock(&m_tmt);
#endif
}
void unlock()
{
#ifdef _WIN32
LeaveCriticalSection(&m_cs);
#else
pthread_mutex_unlock(&m_tmt);
#endif
}
private:
#ifdef _WIN32
CRITICAL_SECTION m_cs;
#else
pthread_mutex_t m_tmt;
#endif
};
explicit CLock(CMutex& mutex) : m_mutex(mutex) {m_mutex.lock();}
~CLock() {m_mutex.unlock();}
private:
CMutex& m_mutex;
};
#endif //__LOCK_H__
- 一个简单但很好用的线程锁
- 一个很好的但又很简单的队列
- 一个简单的绿色模板 但值得学习~!!! (我写了很好的注释)
- 一个很好用的软件
- 很好用的一个轮播图
- 一个简单但不明白的问题
- 一个简单易懂但受益匪浅的问答
- 一个简单但完整的NDK demo
- 一个简单的socket服务器但程序
- select 禁用,但可以传值,很好用的!
- php 不常用但很好用的用法
- 进程与线程一个很好的类比,大家参考一下
- 一个很好很好用的前景检测算法库
- 关于MMU简单说明的一个很好的小文章
- VerticalBannerView的简单实现 很好用
- 一个简单的线程类
- 一个简单的线程池
- 一个简单的线程池
- WCF从理论到实践(9):实例模式和对象生命周期
- 怎样学好中医,非常值的一读
- sc config、net-设置系统服务
- JavaScript String 对象参考手册
- MOTO 手机的UA
- 一个简单但很好用的线程锁
- 考试系统问题
- 在csdn blog添加友情链接
- 匿名聊天网站zouha.com风靡网络
- 杂想
- tail -f run.log 功能解释
- 追MM与23种设计模
- 借助交叉编译用C编译Android上运行的程序
- Twist系列——简介篇