Are the thread semantics for file objecst documented anywhere? I
don't see anything in the library manual, which is where I expected to
find it. It looks like read and write are atomic by virtue of fread
and fwrite being atomic.
I'm less sure what guarantees, if any, the other methods attempt to
provide. For example, it looks like concurrent calls to writelines()
will interleave entire lines, but not parts of lines. Concurrent
calls to readlines() provide insane results, but I don't know if
that's a bug or a feature. Specifically, if your file has a line that
is longer than the internal buffer size SMALLCHUNK you're likely to
get parts of that line chopped up into different lines in the
resulting return values.
If we can come up with intended semantics, I'd be willing to prepare a
patch for the documentation.