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
My program has two threads:
- Main execution thread that handles user input and queues up database writes
- 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