How can I synchronize database access between a write-thread and a read-thread?

Posted by Runcible on Stack Overflow See other posts from Stack Overflow or by Runcible
Published on 2010-04-02T23:23:32Z Indexed on 2010/04/02 23:33 UTC
Read the original article Hit count: 252

Filed under:
|
|
|

My program has two threads:

  1. Main execution thread that handles user input and queues up database writes
  2. A utility thread that wakes up every second and flushes the writes to the database

Inside the main thread, I occasionally need to make reads on the database. When this happens, performance is not important, but correctness is. (In a perfect world, I would be reading from a cache, not making a round-trip to the database - but let's put that aside for the sake of discussion.)

How do I make sure that the main thread sees a correct / quiescent database?

A standard mutex won't work, since I run the risk of having the main thread grab the mutex before the data gets flushed to the database. This would be a big race condition.

What I really want is some sort of mutex that lets the main thread of execution proceed only AFTER the mutex has been grabbed and released once. Does such a thing exist? What's the best way to solve this problem?

© Stack Overflow or respective owner

Related posts about mysql

Related posts about threads