//autolock.h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<pthread.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/time.h>
#include<errno.h>
#include <semaphore.h>
class autolock
{
private:
pthread_mutex_t m_mutex ; // = PTHREAD_MUTEX_INITIALIZER;
public:
void lock()
{
pthread_mutex_lock(&m_mutex); //Lock(cs);
}
void unlock()
{
pthread_mutex_unlock(&m_mutex); //unLock(cs);
}
};
/DriveClass.h///
#include "autolock.h"
#include "stdio.h"
#include <map>
using namespace std;
class DriveClass
{
private:
static map<long long ,int> m_map_drivepack;
static autolock m_autolock;
public:
void put(long long udid,int value)
{
m_autolock.lock();
map<long long,int>::iterator it =m_map_drivepack.begin();
if(m_map_drivepack.end()!=it )//find
{
it->second = value;
}else
{
m_map_drivepack.insert( std::pair<long long ,int>(udid, value) );
}
m_autolock.unlock();
}
bool get(long long udid,int& value)
{
bool bresult=false;
m_autolock.lock();
map<long long,int>::iterator it =m_map_drivepack.begin();
if(m_map_drivepack.end()!=it )//find
{
value =it->second ;
bresult =true;
}else
{
bresult =false;
printf("get fail, no this udid map....\n");
}
m_autolock.unlock();
}
};
map<long long ,int> DriveClass::m_map_drivepack; //=map<long long ,int>;
autolock DriveClass::m_autolock=autolock(); //=autolock;
/test_DriveClass.cpp
#include "stdio.h"
#include "DriveClass.h"
void *WriteHbaseThread(void *pParam)
{
//printf("WriteHbaseThread:threadID:%u,Hbase thread create success.....\n",(long)syscall(SYS_gettid));
int *p=(int*)pParam;
printf("threadid:%d\n",*p);
DriveClass driveclass;
long long udid=1;
int value=2;
while(1)
{
driveclass.put(udid,value);
}
}
int main()
{
pthread_t pthbase[10];
int hbase_threadindex[10];
for(int i=0;i<10;i++) //10 handle threads
{
hbase_threadindex[i]=i;
}
int result=0;
for(int i=0;i<10;i++) //10 handle threads
{
if((result=pthread_create(&pthbase[i],NULL,WriteHbaseThread,(void *)&hbase_threadindex[i] ))!=0)
{
perror("pthread WriteHbaseThread create fail:");
exit(-1);
}else
{
//printf("WriteHbaseThread:Hbase thread create success.....\n");
}
//
//
}
while(1)
{
}
return 0;
}
/最后编译 g++ -o test test_DriveClass.cpp DriveClass.h autolock.h -lpthread /