C# 共享内存问题

lyz2017cc 2017-01-10 03:37:06
由于最近用到了进程间的通讯,于是想到了 创建一块共享内存, 网上的例子看了一下,一个进程向共享内存中写入数据 ,另一个进程从共享内存中读取, 那么 一直往这个共享内存中写数据,会不会导致内存溢出? 还是 向共享内存中写入数据上一条就被覆盖了? 如果不覆盖 那么怎么删除上一条写入的数据? 求帮忙解决,提供下思路 不慎感激
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyz2017cc 2017-01-11
  • 打赏
  • 举报
回复
引用 4 楼 wanghui0380 的回复:
正常来说这种需求我们会使用MQ,而不是直接共享内存。毕竟直接控制还需要自己考虑同步和锁,使用MQ就简单多了
消息队列 put-get-delete模式 会不会比较慢? 可以满足80ms 读写吗? 谢谢您的建议 我研究一下
lyz2017cc 2017-01-11
  • 打赏
  • 举报
回复
引用 5 楼 lyz2017cc 的回复:
[quote=引用 4 楼 wanghui0380 的回复:] 正常来说这种需求我们会使用MQ,而不是直接共享内存。毕竟直接控制还需要自己考虑同步和锁,使用MQ就简单多了
消息队列 put-get-delete模式 会不会比较慢? 可以满足80ms 读写吗? 谢谢您的建议 我研究一下[/quote] 消息队列 可以的
wanghui0380 2017-01-11
  • 打赏
  • 举报
回复
正常来说这种需求我们会使用MQ,而不是直接共享内存。毕竟直接控制还需要自己考虑同步和锁,使用MQ就简单多了
Forty2 2017-01-11
  • 打赏
  • 举报
回复
引用 2 楼 lyz2017cc 的回复:
一个进程第二次向共享内存中写入数据时,第一次写入的会不会被第二的数据覆盖掉?
会,如果你写的位置是一样的。 除非数据很大,’共享内存‘一般不是最佳的进程间通讯机制。 因为你还要 1、A通知有新数据,以及新数据在哪里。 2、B通知‘新数据’读取就绪。 其他方法有Named Pipe,WCF,Socket等等。他们都有应答的机制,不用你自己同步。
lyz2017cc 2017-01-10
  • 打赏
  • 举报
回复
一个进程第二次向共享内存中写入数据时,第一次写入的会不会被第二的数据覆盖掉?
xuzuning 2017-01-10
  • 打赏
  • 举报
回复
没有问题,C# 提供了 MemoryMappedFile 在 System.IO.MemoryMappedFiles 中 参考:http://www.cnblogs.com/zeroone/archive/2012/04/18/2454776.html

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧