我有一些数据类型的数组(int,string,甚至用户定义的类对象)和程序中的几个线程。我希望能够找到数组在使用某些值初始化后是否已更新。一个想法是关联数组中的值的散列,每当我想检查数组是否已更新时,重新计算散列。有没有其他方法在c ++中这样做?或者我们可以检查自上次检查以来内存地址的范围是否已更新?
由于
答案 0 :(得分:3)
只有在不关心修改对象但重置回其初始值的情况下,哈希方法才有效。在这种情况下,对象被“更新”,但没有办法告诉使用哈希。
另一种方法是使用更新计数器:在对象旁边保留一个整数,并在每次更新时递增它。
答案 1 :(得分:3)
您可以将数组封装在一个类模板中,该模板为您需要的任何读写操作提供外观,并在更新时标记数组dirty
- 在每次检查时重置dirty
标志。
不确定如何在多个读/写线程中实现这种可靠性,但我想这取决于访问模式和您想要的确切语义。
[散列不起作用,因为散列总是会发生碰撞。]