c/c++常用代码 -- 共享内存
#pragma once
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <windows.h>
template<class T>
class CMySM
{
public:
CMySM()
{
m_pMem = NULL;
m_hMem = NULL;
}
~CMySM()
{
Close();
}
BOOL Create(LPCTSTR szName)
{
)
return FALSE;
do
{
m_hMem = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,
PAGE_READWRITE | SEC_COMMIT, , sizeof(T), szName);
if (m_hMem == NULL)
break;
m_pMem = MapViewOfFile(m_hMem, FILE_MAP_ALL_ACCESS, , , );
if (m_pMem == NULL)
break;
memset(m_pMem, , sizeof(T));
return TRUE;
}
while (FALSE);
Close();
return FALSE;
}
BOOL Open(LPCTSTR szName)
{
)
return FALSE;
do
{
m_hMem = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, szName);
if (m_hMem == NULL)
break;
m_pMem = MapViewOfFile(m_hMem, FILE_MAP_ALL_ACCESS, , , );
if (m_pMem == NULL)
break;
return TRUE;
}
while (FALSE);
Close();
return FALSE;
}
void Close()
{
if (m_pMem != NULL)
{
UnmapViewOfFile(m_pMem);
m_pMem = NULL;
}
if (m_hMem != NULL)
{
CloseHandle(m_hMem);
m_hMem = NULL;
}
}
inline T* Get(){return (T*)m_pMem;}
public:
PVOID m_pMem;
HANDLE m_hMem;
};
c/c++常用代码 -- 共享内存的更多相关文章
- php操作共享内存shmop类及简单使用测试(代码)
SimpleSHM 是一个较小的抽象层,用于使用 PHP 操作共享内存,支持以一种面向对象的方式轻松操作内存段.在编写使用共享内存进行存储的小型应用程序时,这个库可帮助创建非常简洁的代码.可以使用 3 ...
- 撸代码--linux进程通信(基于共享内存)
1.实现亲缘关系进程的通信,父写子读 思路分析:1)首先我们须要创建一个共享内存. 2)父子进程的创建要用到fork函数.fork函数创建后,两个进程分别独立的执行. 3)父进程完毕写的内容.同一时候 ...
- 撸代码--类QQ聊天实现(基于linux 管道 信号 共享内存)
一:任务描写叙述 A,B两个进程通过管道通信,像曾经的互相聊天一样,然后A进程每次接收到的数据通过A1进程显示(一个新进程,用于显示A接收到的信息),A和A1间的数据传递採用共享内存,相应的有一个B1 ...
- [转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile
http://blog.csdn.net/stpeace/article/details/39534361 进程间的通信方式有很多种, 上次我们说了最傻瓜的“共享外存/文件”的方法. 那么, 在本文中 ...
- 作为phper既然了解共享内存函数shmop的使用方法,那么就必须要了解一下信号量是什么,以及信号量使用的代码案例
在单独的一个PHP进程中读写.创建.删除共享内存方面上你应该没有问题了.但是实际运行中不可能只是一个PHP进程在运行中.如果在多个进程的情况下你还是沿用单个进程的处理方法,你一定会碰到问题--著名的并 ...
- C扩展 从共享内存shm到memcache外部内存
引言 - ipc - shm 共享内存 本文会通过案例了解ipc 的共享内存机制使用, 后面会讲解C 如何使用外部内存服务memcached. 好先开始了解 linux 共享内存机制. 推荐先参看下面 ...
- C# 进程间通信(共享内存)
原文:C# 进程间通信(共享内存) 进程间通信的方式有很多,常用的方式有: 1.共享内存(内存映射文件,共享内存DLL). 2.命名管道和匿名管道. 3.发送消息 本文是记录共享内存的方式进行进程间通 ...
- 修改linux共享内存大小
这是实际linux系统显示的实际数据: beijibing@bjb-desktop:/proc/sys/kernel$ cat shmmax 33554432 beijibing@bjb-deskt ...
- 单元测试系列之九:Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
随机推荐
- 更改Pch配置
在Build Settings 里搜索prefix 在第一个AppleLLVM.7.0 有一个 PrefixHeader 属性 在属性里添加 $(SRCROOT)/加上pch文件名字 然后编 ...
- 蛮考验基础的JS笔试题(有坑小心!)
1. 考察this var length = 10 function fn(){ alert(this.length) } var obj = { length: 5, method: functi ...
- UNICODE字符串与多字节字符串的转换
相互转换的两个函数的声明: 1. 多字节字符串与宽字符串的转换 int MultiByteToWideChar( UINT CodePage, // code page,一般设为 CP_ACP DWO ...
- about control %CPU
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #define timesize 200000 ...
- 泛型集合转换为DataTable
在做项目中,遇到了将集合转换为DataTable的使用,在网上看了资料,在这里记录下来,分享. using System; using System.Collections.Generic; usin ...
- responseXML 属性
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...
- 在c#中使用mongo-csharp-driver操作mongodb
1)下载安装 下载地址:http://github.com/mongodb/mongo-csharp-driver/downloads 编译之后得到两个dll MongoDB.Driver.dll:顾 ...
- 批量关闭 WordPress 的 Pingback 和 Trackback 功能
方法很简单,WordPress 后台即可实现,在设置-讨论中把"接收来自外部博客的引用通告(Pingback 和 Trackback)"这一项勾选去掉,保存设置.这样,以后新增的文 ...
- PHPExcel导出导入excel、csv等格式数据
<?php if(!defined('BASEPATH')) exit('No direct script access allowed'); //物资发料单明细 class Read_writ ...
- spark概论
一.概述 1.轻:(1)采用语言简洁的scala编写:(2)利用了hadoop和mesos的基础设施 2.快:spark的内存计算.数据本地性和传输优化.调度优化,使其在迭代机器学习,ad-hoc ...