2013-01-31 109 views
0

我有一個非結構化數據的對象,不斷被一個單獨的線程更新,我無法控制它。我需要將非結構化數據解析爲模型對象,以便我的用戶可以使用它。如何跟蹤不斷更新的對象的屬性?

每當數據發生變化時,我都可以啓動一個新的線程,但是我可以很容易地看到這個失控(僅僅考慮它似乎沒有多大意義)。我可以按設定的時間間隔觸發一個線程,但這意味着反映非結構化數據的數據結構的用戶不能保證所有更新都已被解析。

我想我可以在設定的時間間隔觸發一個線程,並且每次用戶訪問模型對象上的一個屬性時,都會觸發非結構化數據的解析。

任何想法?

回答

2

首先,您需要一些鎖定。您不希望數據在被解析(或複製到解析器)時被修改。

其次,當數據被修改時,我會設置一些outOfDate標誌。然後僅在需求時進行解析,當訪問屬性並設置標誌時。解析完成後重置標誌。

創建一個額外的線程進行分析只會使其更復雜。然後,您需要從用戶線程和解析器線程同步訪問權限。另外,我不認爲額外的線程有任何好處。例如。我不認爲,這會減少延遲。但它可能會不必要地增加CPU負載。

+0

我可以簡單地將非結構化數據複製到解析器中。但是我越想到這一點,我認爲如果標誌設置爲true,則會以設定的時間間隔單獨啓動一個線程。 – ruipacheco