2010-11-26 17 views
0

我有一些數據類型(int,字符串,甚至用戶定義的類對象)和我的程序中的幾個線程的數組。我希望能夠找到數組是否已經用一些值初始化後被更新了。一個想法是關聯數組中的值的散列值,並且每當我想檢查數組是否已更新時,都要重新計算散列值。有沒有其他的方式在C++中做到這一點?或者我們可以檢查自上次檢查以來內存地址範圍是否已更新?如何檢查數組更新

感謝

+0

這取決於很多東西.. 1)你有沒有訪問該修改它的代碼?如果不是,那麼2)它被修改的頻率,你想要執行這些檢查的頻率以及它有多大?哦,你爲什麼需要它? – ruslik 2010-11-26 22:59:22

回答

3

您可以將數組封裝到類模板中,該模板爲您需要的任何讀寫操作提供外觀,並在更新時標記數組dirty - 在每次檢查時重置dirty標誌。

不知道你怎麼可以在多個讀/寫器線程這個可靠的,但我想這取決於訪問模式和你想要的精確語義。

[散列不會起作用,因爲哈希總是可以碰撞。]

3

,如果你不關心,其中一個對象被修改,但隨後重置回其初始值的情況下哈希方法僅適用。在這種情況下,該對象被「更新」,但無法使用散列進行分析。

另一種方法是使用更新計數器:保持一個整數旁邊的對象,每次更新時增加它。

+0

我很好,對象被修改,但重置回相同。 Wat會是一個很好的散列函數,它可以處理所有可能的數據類型..一個模板化的散列函數?此外,更新計數器不會與字符串,int等一起工作。 – user352951 2010-11-26 22:47:19

+0

序列號是個好主意 – 2010-11-26 22:47:32