C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – WriteProcessMemory和类似函数是否使可能缓存的数据无效?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个现有的程序,我需要通过IPC进行通信.我可以修改它的一小部分,但不能添加任何奇特的解决方案,如共享内存,管道或套接字.所以我想与直接读/写到程序地址空间的函数进行通信:

> linux上的process_vm_writev
> Windows上的WriteProcessMemory
> macOS上的mach_vm_write

如果我使用其中一个函数修改内存中的值,那么旧值的缓存副本可能会失效吗?如果不是一个易于检测到新值的易失性指针?

@H_696_13@解决方法
WriteProcessMemory很乐意完全按照它所说的去做.它写入内存,然后cpu缓存将以逻辑上有效(但未指定)的状态结束.

但是,请注意其他程序没有意识到这些写入.如果它有自己的缓存概念,包括在寄存器中缓存变量值等机制,则不会更新这些副本.操作系统无法知道每种语言如何实现这种缓存机制,但性能问题决定了大多数严肃的编程语言都有这样的机制.

如果写入程序使用C或C易失性指针,则可以部分减轻这种情况.编译器无法完全消除读取.但是,只要不能观察到这些读取,就可以用其他指令重新排序.这可能会影响他们的时间,这会产生类似于缓存的效果 – 您的WriteProcessMemory可能为时已晚.

大佬总结

以上是大佬教程为你收集整理的c – WriteProcessMemory和类似函数是否使可能缓存的数据无效?全部内容,希望文章能够帮你解决c – WriteProcessMemory和类似函数是否使可能缓存的数据无效?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。