关于进程同步。。

JerKii 2018-01-18 11:32:13
我有两个不同的进程,都会往同一个数据结构(比如二叉树等)写入数据,现在想到的一个很简陋的方案就是把这个数据结构的内存用共享内存实现,并且该内存必须映射到这两个进程的相同虚拟地址空间,然后再使用进程锁保障数据的读写。

除了这个方法外,还有别的更优雅的方案么?
...全文
521 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JerKii 2018-01-19
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
比如使用事件,CreateEvent
我的前提是这两个进程都会维护同一个数据结构,也就是说如果进程A在干别的事情时,进程B会往这个数据结构里添加节点,当进程A再次操作该数据结构时,他能感知到进程B往这个数据结构上添加到节点。
赵4老师 2018-01-19
  • 打赏
  • 举报
回复
《Windows核心编程》 《Unix编程艺术》
自信男孩 2018-01-19
  • 打赏
  • 举报
回复
可以考虑一下信号量,若是两个进程间同步,可以用互斥信号量,其实和锁机制类似的,适用于进程间同步和线程间同步; 若是多进程间通信,可以考虑PV操作 https://www.cnblogs.com/bizhu/archive/2012/05/17/2506285.html
paschen 2018-01-19
  • 打赏
  • 举报
回复
引用 2 楼 JerKii的回复:
[quote=引用 1 楼 paschen 的回复:] 比如使用事件,CreateEvent
我的前提是这两个进程都会维护同一个数据结构,也就是说如果进程A在干别的事情时,进程B会往这个数据结构里添加节点,当进程A再次操作该数据结构时,他能感知到进程B往这个数据结构上添加到节点。[/quote] 共享内存那就只有使用内存映射机制,可配合其他同步方法如事件、信号量等
宁南学者 2018-01-19
  • 打赏
  • 举报
回复
加锁同步,信号量 等
leetow2006 2018-01-19
  • 打赏
  • 举报
回复
用共享锁控制,只有获得共享锁的句柄才能使用共同的资源
paschen 2018-01-18
  • 打赏
  • 举报
回复
比如使用事件,CreateEvent

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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