• ACE内存映射学习


    ACE中ACE_MMAP_Memory_Pool、ACE_Lite_MMAP_Memory_Pool、ACE_Pagefile_Memory_Pool都封装了操作系统的内存映射文件的功能.因此可以实现进程间的通信。闲来无聊,练练自己的笨手...

    进程1代码示例(写入值):

            //定义内存映射的名称,以供进程间通信
            ACE_TCHAR  *pszPoolName =  ACE_TEXT("SelfPoolName");
            
    //指定ACE_PI_Control_Block参数,表示分配的内存与位置无关
            typedef  ACE_Malloc_T< ACE_MMAP_Memory_Pool, ACE_Process_Mutex, ACE_PI_Control_Block >  SharedMalloc;

            SharedMalloc  myMalloc( pszPoolName );

            ACE_TCHAR  szName[]  
    =  ACE_TEXT("fangkm");
            ACE_TCHAR  szSchool[]  
    =  ACE_TEXT("whut");

            
    //分配内存
            ACE_TCHAR* pszName = (ACE_TCHAR*)myMalloc.malloc( sizeof( szName ) );
            ACE_OS::strcpy( pszName, szName );
            
    //为该内存地址关联一个名称
            if-1 == myMalloc.bind( "Name", pszName ) )
            {
                AtlMessageBox( NULL, _T(
    "failed") );
            }

            ACE_TCHAR
    * pszSchool = (ACE_TCHAR*)myMalloc.malloc( sizeof( szSchool ) );
            ACE_OS::strcpy( pszSchool, szSchool );
            
    if-1 == myMalloc.bind( "School", pszSchool ) )
            {
                AtlMessageBox( NULL, _T(
    "failed") );
            }

            ACE_OS::sleep( 
    10 );

            
    //释放对象相关的资源
            myMalloc.remove();
    进程2代码示例(读取值):
            ACE_TCHAR  *pszPoolName =  ACE_TEXT("SelfPoolName");

            typedef  ACE_Malloc_T
    < ACE_MMAP_Memory_Pool, ACE_Process_Mutex, ACE_PI_Control_Block >  SharedMalloc;
            SharedMalloc  myMalloc( pszPoolName );

            ACE_TCHAR  
    *pszName = NULL;
            ACE_TCHAR  
    *pszSchool = NULL;
            
    //查找Name关联的内存值
            if( myMalloc.find( "Name", (void*&)pszName ) != -1 )
            {
                AtlMessageBox( NULL, _U_STRINGorID(CA2T(pszName)) );
            }

            
    if( myMalloc.find( "School", (void*&)pszSchool ) != -1 )
            {
                AtlMessageBox( NULL, _U_STRINGorID(CA2T(pszSchool)) );
            }
  • 相关阅读:
    django模型层(二)多表操作
    django模型层(一)单表操作
    模板系统
    HTTP协议web开发知识点
    视图函数
    URL路由系统
    web框架的本质
    MySQL多表查询
    MySQL单标查询
    列表渲染
  • 原文地址:https://www.cnblogs.com/fangkm/p/1509349.html
Copyright © 2020-2023  润新知