C-如何判断两个线程是否访问了同一内存区域



想象我们有两个相同过程的线程,我想知道两个线程是否相互通信。换句话说,如果两个线程访问(读/写(与内存的相同区域,则它们之间存在相关性。更具体地说,输入是两个不同的线程ID,输出是一个布尔值,它指示两个线程是否访问了同一内存区域。是否有任何工具或方法可以跟踪两个线程的内存访问(读/写(操作?

找出两个线程是否访问相同的内存将非常困难。它可能涉及虚拟化的使用,因此您可以每次访问一个线程访问内存时都会调用自己的代码,以查看其他线程是否也访问了此内存。这反过来会使线程运行得如此慢,以至于您可能需要等待很长时间才能覆盖其工作集。

幸运的是,您不需要做任何事情,因为我可以告诉您,如果您尝试过它:

在同一过程中,实际上可以保证任何两个线程将访问某些相同的内存。这不一定是因为他们试图互相交流,而是由于各种家政原因,例如跟踪哪个线程是最新的,援引需要将某个状态保持在每次阅读的基础等的常见功能,等等。生,

您手中有一个X-y问题。http://xyproblem.info/

最新更新