簡體   English   中英

兩個進程打開同一個文件進行寫入

[英]Two processes opening the same file for writing

當兩個進程同時打開一個不存在的文件進行寫入時會發生什么? 即考慮在兩個並發進程中運行的C ++代碼

ofstream ofs(“/ my / test / path / some_file”)

操作系統會序列化實際的文件創建嗎?

PS:我在Windows上編碼,所以我主要想看看Windows會做什么,但我很想知道這里的行為是否依賴於os。

關於打開相同文件進行寫入的兩個進程沒什么特別令人興奮的。

當這些進程嘗試寫入同一文件時,有趣的部分開始。 操作系統不打算作為裁判。 每個單獨的進程都將由操作系統安排在操作系統感覺到它時執行。 無論進程在其時間片段內做什么,操作系統通常會不受影響。 一個進程可能會向文件寫入一些內容,然后另一個進程可能會寫入某些內容,或者可能不會。 取決於代碼的作用。

因此,除非采用明確的步驟,以某種方式使多個進程協調對文件的訪問,否則無法預測多個進程寫入文件的最終結果。 電腦不會着火或內爆,世界不會走到盡頭。 但是,每次重復這個實驗,結果都會有所不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM