[英]How can I modify a file while other threads read from it?
我正在將數據多線程(讀和寫)到單個文本文件中或從單個文本文件中多線程化。 我需要能夠在不替換實際文件的情況下替換或刪除此文件中的文本。
我不能簡單地將.read()
轉換為字符串,然后將.write()
為具有相同名稱的新文件,因為其他線程仍在使用該文件。 我無法將.write()
放入另一個文件中,因為線程需要從單個文件中.read()
。
這可能嗎?
是否有等效於file.replace()
或file.remove()
或file.delete()
?
餿主意。 使用唯一負責寫入/讀取文件的另一個線程。 如果文件太大,也可以將其讀入內存。
當然可以,但是只有在您以統一的方式讀/寫文件時,它才有用。 當我說統一時,您應該將文件視為數據塊。 就像說,每個4096字節是一個塊,您可以在每個塊上執行所需的操作。 如果您不這樣做,則必須跟蹤數據位置的偏移量,這將使程序更難管理。
之后,您可以將隨機訪問功能用於文件I / O。 有諸如seek()
的功能可移動到文件中的其他偏移量,並通過tell()
告知當前的偏移量。 然后,您可以從當前位置讀取或寫入。 就像記憶一樣思考它,因為基本上就是它了。
我不確定您要問的是file.remove()
, file.replace()
, file.delete()
函數的存在或其對您的工作有何幫助。 它達不到目的。
另請閱讀有關“ 讀者-作家”問題的更多信息,以了解如何進行同步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.