2015-05-22 104 views
0

我正在撕裂一個設計不佳的子系統,它經歷了兩代「微小的變化」,並變成了一個血腥的混亂。我遇到的一個有趣的問題是程序如何將整個程序選項傳送到兩個線程中:它將程序選項複製到每個線程選項中,並將每個線程選項傳遞給線程。這看起來很愚蠢,因爲程序選項已經存儲在全局對象中。務實的設計模式

我應該指出,只要命令行和配置文件已經處理完,在任何線程被操縱之前,這些選項都是隻讀的。更改配置文件或命令選項需要重新啓動程序。

據我所知,做這件事的程序員當時正在閱讀設計模式,並得到了「減少未說明的依賴關係」的口頭禪,但從全局複製選項似乎浪費了時間和空間。

那麼,建議如何以一種線程可以在不復制它們的情況下訪問它們的方式存儲整個程序選項?

回答

0

您可以直接存儲選項(確保它們的生命週期是足夠的,例如在堆上)並將指向該對象的指針作爲參數傳遞給線程。

在另一方面平時的命令行選項的大小可以忽略不計,並通過不將它們複製你會優化幾乎沒有什麼

+0

那是我拿上它了。設計工作的方式,設置可以在程序運行時修改,但是這發生在主執行線程的上下文中,並且任何時候這些選項都會改變,兩個線程都會失效,所以簡單的路徑是停止運行線程並啓動新線程,傳遞更新後的選項。 – Wexxor