Я пишу сценарий, используя два отдельных потока, один из которых выполняет операцию чтения файла, а другой выполняет добавление, оба потока выполняются довольно часто.
У меня вопрос: если один поток прочитает файл, а другой находится в середине добавления строк, таких как «Это тест», в этот файл, что произойдет?
Я знаю, что если вы добавляете строку меньше размера буфера , независимо от того, как часто вы читаете файл в других потоках, в вашем файле никогда не будет неполной строки, такой как "This i" читать файл, я имею в виду ОС будет либо: добавить "Это тест" -> прочитать информацию из файла; или: прочитать информацию из файла -> добавить «Это тест» в файл; и такого никогда не произойдет: добавьте «Это я» -> прочитать информацию из файла -> добавить «это тест».
Но если «Это тест» достаточно велик (при условии, что это строка больше, чем буфер ), ОС не может выполнить добавление в одну операцию, поэтому добавление будет разделить на две части: сначала добавьте «This i» в файл, затем добавьте «sa test», так что в такой ситуации, если мне случится прочитать файл в середине всей операции добавления, я получу такой результат: append «Это я» -> прочитать информацию из файла -> добавить «тест», что означает, что я могу прочитать файл, который содержит неполную строку?