2016-03-13 112 views
-2

我知道全局變量不好,但是我有一個checksettings函數,它每運行一次就會運行。 http://pastebin.com/54yp4vuW粘貼箱包含一些檢查設置功能。在添加GetPrivateProfileIntA之前,一切正常。現在,當我運行它時,它就像地獄一樣落後。我只能假設這是因爲它不斷加載文件。所以我的問題是,全球變量是不斷更新的。 (也就是說,如果我把它放在全局變量var它會阻止滯後) 謝謝:)是否全局變量不斷更新

+2

偏題:而不是一羣全局變量,考慮一個結構。這樣,如果您稍後發現自己需要多個實例,則可以修改程序以更輕鬆地使用和使用該結構的多個實例。 – user4581301

+0

請閱讀[問]。 – juanchopanza

回答

-1

假設我正確解釋你的問題,然後不,全局變量不會不斷更新,除非你在代碼中明確這樣做。所以是的,把這些調用放在全局變量中會擺脫滯後。

-1

您尚未提供有關設計的任何詳細信息,但全局變量在整個應用程序中可見,並在寫入時得到更新。 讀取該全局變量的多個進程/線程將讀取相同的更新值。 但同步讀/寫需要使用同步機制,例如互斥鎖,條件變量等。

在您的情況下,您需要決定何時爲所有這些設置調用GetPrivateProfileIntA()。 所有這些設置是不斷更新還是隻有這些設置的一小部分?確定需要定期監控的設備並只加載這些設備。

如果一個設置是有狀態的,意味着該類的所有對象引用設置的單個副本,那麼我會使用靜態類變量而不是普通的全局變量。

或者,您可以在需要的情況下對GetPrivateProfileIntA()進行JIT調用,而不用擔心將設置存儲在全局變量中。

+1

沒有評論的怯懦downvote一次又一次地證明,SO需要給予那些擁有堅實技術骨幹的人以低劣的特權 – Prab