跨平台编程方法 问题
例如
我想加锁
然后 我在头文件里面这样定义
#ifdef WIN_32
HANDLE lock1;
#else
pthread_mutex_t lock1;
#endif
然后定义函数对它操作
void createLock()
{
#ifdef WIN_32
lock1 = CreateMutex(NULL,TRUE,NULL);
#else
lock1 = PTHREAD_MUTEX_INITIALIZER;
#endif
}
void setLock()
{
#ifdef WIN_32
ReleaseMutex(lock1);
WaitForSingleObject(lock1,INFINITE);
#else
pthread_mutex_lock(&lock1);
#endif
}
但是这样做 似乎不是很灵活,假如我接下来还要创建更多的锁.....
应该怎么样比较规范合理的写这样类型的代码呢?
跨平台 类 编程
[解决办法]
.h
#ifndef _Mutex_H
#define _Mutex_H
#ifndef _WIN32
#include <pthread.h>
#else
#include <windows.h>
#endif
class Mutex
{
public:
Mutex();
~Mutex();
void Lock();
void Unlock();
private:
#ifdef _WIN32
HANDLE m_mutex;
#else
pthread_mutex_t m_mutex;
#endif
};
#endif
.cpp
#include "Mutex.h"
Mutex::Mutex()
{
#ifdef _WIN32
m_mutex = ::CreateMutex(NULL, FALSE, NULL);
#else
pthread_mutex_init(&m_mutex, NULL);
#endif
}
Mutex::~Mutex()
{
#ifdef _WIN32
::CloseHandle(m_mutex);
#else
pthread_mutex_destroy(&m_mutex);
#endif
}
void Mutex::Lock()
{
#ifdef _WIN32
WaitForSingleObject(m_mutex, INFINITE);
#else
pthread_mutex_lock(&m_mutex);
#endif
}
void Mutex::Unlock()
{
#ifdef _WIN32
::ReleaseMutex(m_mutex);
#else
pthread_mutex_unlock(&m_mutex);
#endif
}
------解决方案--------------------
用类封装线程的时候不能用普通成员函数,要用静态成员函数