ACE网络编程框架,功能很强大!
#include"ace/Malloc.h"
#include"ace/Malloc_T.h"
#include"ace/Null_Mutex.h"
#include<ace/MMAP_Memory_Pool.h>
typedef ACE_Malloc<ACE_MMAP_Memory_Pool,ACE_Null_Mutex>Malloc;
void ReadData();
void WriteData();
Malloc *g_mem;
int main(int arn, char **arc)
{
ACE_UNUSED_ARG(arc);
ACE_MMAP_Memory_Pool_Optionsoptions(ACE_DEFAULT_BASE_ADDR,
ACE_MMAP_Memory_Pool_Options::ALWAYS_FIXED,
1024 * 10000 );
ACE_NEW_RETURN(g_mem,Malloc("abc", "abc",&options), -1);
ACE_DEBUG((LM_INFO, "####%d\n" ,arn));
if(arn > 1)
{
ReadData();
}
else
{
WriteData();
}
g_mem->sync();
delete g_mem;
return 0 ;
}
void ReadData()
{
ACE_DEBUG((LM_INFO,ACE_TEXT("ReadData!\n")));
char msg[32] ={0} ;
void *data;
for(int i=0; i<10000;i++)
{
sprintf(msg,"MSG: %d ",i);
if(g_mem->find(msg,data) != -1)
{
ACE_DEBUG((LM_INFO, "%s\n" ,(char *)data));
}
else
{
ACE_DEBUG((LM_INFO, ACE_TEXT("buff is NULL inReadData!\n")));
}
}
}
void WriteData()
{
ACE_DEBUG((LM_INFO,ACE_TEXT("WriteData!\n")));
for(int i=0; i<10000;i++)
{
char *buff = (char*)g_mem->malloc(1024);
if(buff!=NULL)
{
sprintf(buff, "MSG: %d" ,i);
g_mem->bind(buff,(void *)buff);
}
else
{
ACE_DEBUG((LM_INFO, ACE_TEXT("buff is NULL inWriteData!\n")));
}
}
}