Dipak Dipak - 1 month ago 12
C++ Question

Is ofstream thread safe?

I am working on a program, which uses multiple

std::ifstream
s for reading a binary file, one
std::ifstream
for each thread. Now I need to know, if
std::ofstream
is thread-safe on Windows and Linux for writing in a same file. I am using using only one
std::ofstream
and using for multiple threads.

I am reading different blocks using using each thread and writing those block in output file using
seekp()
and
write()
. Currently it is working for me but whether it is problematic for big files.

Is
std::ofstream
thread safe?

Answer

From C++ standards (Input/Output Library Thread Safety):

27.1.3 Thread safety [iostreams.thread-safety]

Concurrent access to a stream object [string.streams, file.streams], stream buffer object [stream.buffers], or C Library stream [c.files] by multiple threads may result in a data race [intro.multithread] unless otherwise specified [iostream.objects]. [Note: Data races result in undefined behavior [intro.multithread].

Comments