- python实现代码
import mmap
import contextlib
from datetime import datetime
import random
import time
with contextlib.closing(mmap.mmap(-1, 1024, tagname='global_share_memory', access=mmap.ACCESS_WRITE)) as m:
for i in range(1, 10001):
m.seek(0)
nt = datetime.now().strftime( '%Y-%m-%d %H:%M:%S %f' )
m.write((nt).encode())
m.flush()
#t = random.randrange(0,10,1)
print (datetime.now(), "msg " + str(nt))
time.sleep(1)
- c++代码实现
// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <windows.h>
#include <ctime>
#include <time.h>
using namespace std;
int main()
{
SYSTEMTIME sys_time;
LPVOID pBuffer;
LPVOID pEBuffer = NULL;
string strMapName("global_share_memory");
HANDLE hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, 0, L"global_share_memory");
cout << typeid(sys_time.wSecond).name() << endl;
GetLocalTime(&sys_time);
printf("%4d/%02d/%02d %02d:%02d:%02d.%03d ", sys_time.wYear, sys_time.wMonth, sys_time.wDay, sys_time.wHour, sys_time.wMinute, sys_time.wSecond, sys_time.wMilliseconds);
if (NULL == hMap)
{
cout << "无共享内存..." << endl;
}
else
{
while (true)
{
//Sleep(1000);
pBuffer = MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (pEBuffer == NULL)
{
pEBuffer = pBuffer;
}
if (pBuffer != pEBuffer)
{
cout << "读取共享内存数据:" << (char*)pBuffer << endl;
pEBuffer = pBuffer;
GetLocalTime(&sys_time);
printf("%4d/%02d/%02d %02d:%02d:%02d.%03d ", sys_time.wYear, sys_time.wMonth, sys_time.wDay, sys_time.wHour, sys_time.wMinute, sys_time.wSecond, sys_time.wMilliseconds);
cout << endl;
}
}
}
}
- 运行结果