Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can multiple threads write into a file simultaneously, if all the threads are writing to different locations?

Tags:

c++

I am writing the code in c++. Can I run into any kind of race conditions or seg-faults?

like image 675
Invictus Avatar asked Sep 27 '11 06:09

Invictus


1 Answers

There's no problem doing that from the point of view of the underlying system (for all systems I know). However, typically you would need to have completely separate file descriptors/handles. This is because the file descriptor maintains state, e.g. the current file position.

You also need to check the thread-safety of the particular C++ interface to the filesystem that you are using. This is needed in addition to the thread-safety of the underlying filesystem.

You should also consider the possibility that threaded I/O will be slower. The system may have to serialise access to the bus. You may get better performance from overlapped I/O or a dedicated I/O thread fed through a producer/consumer pipeline.

like image 162
David Heffernan Avatar answered Nov 07 '22 08:11

David Heffernan