Boost IPC(interprocess)实现内存共享
来源:互联网 发布:mac alias 永久生效 编辑:程序博客网 时间:2024/06/05 20:53
#include <boost/interprocess/managed_shared_memory.hpp>#include <boost/interprocess/mapped_region.hpp>#include <cstring>#include <iostream>using namespace boost::interprocess;int main(){try { // creating our first shared memory object.shared_memory_object sharedmem1 (create_only, "Hello", read_write);// setting the size of the shared memorysharedmem1.truncate (256);// map the shared memory to current process mapped_region mmap (sharedmem1, read_write); // access the mapped region using get_addressstd::strcpy(static_cast<char* >(mmap.get_address()), "Hello World!\n");// … more code follows} catch (interprocess_exception& e){ std::cout << e.what() << std::endl;}return 1;}
上面的程序实现创建共享内存,下面的实现访问
#include <boost/interprocess/managed_shared_memory.hpp>#include <boost/interprocess/mapped_region.hpp>#include <cstring>#include <iostream>using namespace boost::interprocess;int main(int argc, char *argv[ ]){using namespace boost::interprocess; try { // opening an existing shared memory object shared_memory_object sharedmem2 (open_only, "Hello", read_only);// map shared memory object in current address spacemapped_region mmap (sharedmem2, read_only);// need to type-cast since get_address returns void* char *str1 = static_cast<char*> (mmap.get_address());std::cout << str1 << std::endl;shared_memory_object::remove("Hello");} catch (interprocess_exception& e) { std::cout << e.what( ) << std::endl;} return 0;}
多次执行,内存被删除,而使得无法访问
测试VS2008+boost1.47
- Boost IPC(interprocess)实现内存共享
- 【Boost】Interprocess - 共享内存、文件映射介绍
- 使用BOOST::Interprocess完成内存共享与同步
- Boost.Interprocess使用手册翻译之四:在进程间共享内存 (Sharing memory between processes)
- Boost.Interprocess使用手册翻译之四:在进程间共享内存 (Sharing memory between processes)
- boost之Interprocess库,进程间通讯库之共享内存
- Boost.Interprocess使用手册翻译之四:在进程间共享内存 (Sharing memory between processes)
- Boost.Interprocess使用手册翻译之四:在进程间共享内存 (Sharing memory between processes)
- Boost.Interprocess使用手册翻译之四:在进程间共享内存 (Sharing memory between processes)
- boost::interprocess 内存映射文件的用法
- linux SysV IPC shm共享内存实现
- 共享内存+信号量+消息队列实现IPC
- IPC 共享内存
- IPC-shm 共享内存
- 共享内存IPC
- IPC之共享内存
- IPC-共享内存
- QT-IPC-内存共享
- #define 与 #undef 指令配套使用
- 1个贝尔实验室等于11个中国科学院
- 外部声明在变量声明中的使用与原由
- HTML字符实体(Character Entities),转义字符串(Escape Sequence)
- 平摊分析
- Boost IPC(interprocess)实现内存共享
- struts2 遍历Map的N中方法
- Android闹钟【复杂版】【大明进化十五】
- CAS实现SSO单点登录原理
- 线程互斥锁
- [转]Microsoft Platform SDK 选择及在vc++6.0中的配置
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- ARM基础(2)
- Concurrency vs Parallelism, Concurrent Programming vs Parallel Programming