Atomic int writes on file

Posted by Waneck on Stack Overflow See other posts from Stack Overflow or by Waneck
Published on 2010-05-17T01:09:03Z Indexed on 2010/05/17 1:10 UTC
Read the original article Hit count: 289

Filed under:
|
|
|
|

Hello!

I'm writing an application that will have to be able to handle many concurrent accesses to it, either by threads as by processes. So no mutex'es or locks should be applied to this.

To make the use of locks go down to a minimum, I'm designing for the file to be "append-only", so all data is first appended to disk, and then the address pointing to the info it has updated, is changed to refer to the new one. So I will need to implement a small lock system only to change this one int so it refers to the new address. How is the best way to do it?

I was thinking about maybe putting a flag before the address, that when it's set, the readers will use a spin lock until it's released. But I'm afraid that it isn't at all atomic, is it? e.g.

  • a reader reads the flag, and it is unset
  • on the same time, a writer writes the flag and changes the value of the int
  • the reader may read an inconsistent value!

I'm looking for locking techniques but all I find is either for thread locking techniques, or to lock an entire file, not fields. Is it not possible to do this? How do append-only databases handle this?

Thanks! Cauê

© Stack Overflow or respective owner

Related posts about locking

Related posts about blocking