如何检查数组更新

时间:2010-11-26 22:40:40

标签: c++ arrays memory

我有一些数据类型的数组(int,string,甚至用户定义的类对象)和程序中的几个线程。我希望能够找到数组在使用某些值初始化后是否已更新。一个想法是关联数组中的值的散列,每当我想检查数组是否已更新时,重新计算散列。有没有其他方法在c ++中这样做?或者我们可以检查自上次检查以来内存地址的范围是否已更新?

由于

2 个答案:

答案 0 :(得分:3)

只有在不关心修改对象但重置回其初始值的情况下,哈希方法才有效。在这种情况下,对象被“更新”,但没有办法告诉使用哈希。

另一种方法是使用更新计数器:在对象旁边保留一个整数,并在每次更新时递增它。

答案 1 :(得分:3)

您可以将数组封装在一个类模板中,该模板为您需要的任何读写操作提供外观,并在更新时标记数组dirty - 在每次检查时重置dirty标志。

不确定如何在多个读/写线程中实现这种可靠性,但我想这取决于访问模式和您想要的确切语义。

[散列不起作用,因为散列总是会发生碰撞。]

相关问题