我們知道同步日誌記錄,將日誌消息寫入文件,然後繼續執行程序。異步記錄器隊列日誌消息並將它們寫入單獨的線程。我開始在我的項目中實現Log4CPlus,我想起了一些事情。異步記錄器是否真的有助於提高性能?
我無法初始化更多的LogObjects,因爲這會打開更多的文件句柄,我們不需要它。 (我知道我們應該使用基於特徵的日誌記錄對象,例如UploadLogObj,DownloadLogOb,WebReqLogObj,AuthLogObj等)。希望每個添加的日誌對象都可能會增加日誌記錄線程。
仍然是參數,如果我使用單個日誌對象並從多個線程推送日誌消息,我想必須有一些互斥鎖來防止寫入消息隊列。我的問題不會這個互斥鎖減慢進程,它不會造成性能問題..?
我只是想知道如何異步記錄器的工作,我可以看看代碼,這是一種方法。但希望這些答案對許多人都有啓發。
你可以使用一個無鎖隊列,比如'boost :: lockfree :: queue'。 – Zeta
異步記錄器在另一個線程中完成** IO任務**。 – Jarod42