NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pwrite() and threads
On Wed, 26 May 2010 14:23:26 +0100
Sad Clouds <cryintothebluesky%googlemail.com@localhost> wrote:
> On Wed, 26 May 2010 12:37:55 +0000
> Wouter Klouwen <dublet%acm.org@localhost> wrote:
>
> > Yes, but if you write at a specific offset, you might have a small
> > problem. Say two threads simultaneously want to write, they both
> > calculate the offset and then write to that offset. The end result?
> > Possibly one entry lost as one writes over the other due to
> > invalidated offsets. It seems to me that you need to lock before you
> > calculate the offset anyway. If you are logging, why are you not
> > opening these files in "a" mode and just using write() anyway?
> >
> > --Wouter
>
> Yeah I think this is what I was looking for, if you open a file with
> O_APPEND flag, the kernel will atomically position file pointer to the
> end of file before each write().
>
> There is a constant PIPE_BUF which tells how much data can be written
> atomically to a pipe or fifo. I'm not sure if the same applies to
> regular files.
Just lock the file, or use a logging thread to do the writes from a queue.
--
NetBSD - Simplicity is prerequisite for reliability
Home |
Main Index |
Thread Index |
Old Index