我有一個稱爲FILELOGGER
的單身人士班級和名爲number_of_lines的屬性。 我將確保只有一個對象能夠爲創建單身人士的類別FILELOGGER
創建。多線程環境中的單身人士
在我的應用程序中,我的對象能夠將它寫入文件併爲每次寫入更新number_of_lines
屬性。
如果我在多線程環境中使用這種設計模式該怎麼辦。它的行爲如何,我覺得number_of_lines
屬性應該在其他線程嘗試更新時鎖定。我可能會延遲記錄數據,並且性能會下降。
說例如線程T1
正在日誌時間10:10:10和T2
也記錄在相同的確切時間,並且都嘗試更新number_of_lines
屬性。
如何解決這個問題?有沒有其他的設計模式可以解決這個問題。謝謝你的時間。
「它的行爲如何,當其他線程嘗試更新時,我覺得number_of_lines屬性應該被鎖定,而且我可能會延遲記錄數據,並且性能將會丟失。」不確定你在這裏的意思。但我認爲你必須同時鎖定'writeToFile'函數(或者你的文件會被搞砸)和'number_of_lines'字段才能使值成爲原子。 –
是的。如果我鎖定writeToFile和字段number_of_lines。我會結束放鬆表現,因爲其他寫操作將在隊列中等待,並且不能在確切時間登錄 – sanjayzed
好的,我會給你2個解決方案:1.在消息中包含時間。 2.寫入多個文件。 (失去不失去順便說一句) –