Операционная система/язык:
[*]C++ 11/14< /li>
Linux (Rocky 4.18.0-425.3.1.el8.x86_64)
[*]libc.so.6
< /ol>
Сценарий использования:
Приложение имеет два потока, один записывает данные ~7 КБ (текст добавляется с новой строки) в файл до достижения размера 50 МБ. . Другой поток читает тот же файл и обрабатывает каждую запись, в то время как другой поток продолжает запись. Каждый поток открывает дескриптор файла (т. е. он не является общим). Поток записи и чтения открывает и закрывает файл только один раз. Фрагмент кода ниже для справки (просто для отражения идеи, а не для производства):
Код: Выделить всё
Thread 1 calling...
void writeToFileInBlocks()
{
...
std::ofstream out;
std::string bufferfile = "/mymount/demo.txt";
out.open(bufferfile.c_str(), std::fstream::app);
while (1)
{
if (out.is_open())
{
out = iter) break;
} else {
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78754197/reading-and-writing-the-same-file-with-different-file-handles[/url]