[ntp:hackers] [Gpsd-dev] A lightweight synchronization mechanism for shared memory
Mike S
mikes at flatsurface.com
Fri Mar 25 12:53:47 UTC 2011
If I understand the problem being discussed, it is to provide a method
for a single (multiple preferred) writer to be able to update a data
structure, so that multiple readers can always identify whether they
have read invalid data, as might occur when they read while an update
is happening.
This may be a solution, which allows for multiple writers and readers,
and I believe meets all the conditions:
1) Two copies of the data structure are kept.
2) Writers always update the second copy first, then the first copy.
3) Readers always read the first copy first, then the second copy.
4) Readers must compare both copies, if they differ, the data is
invalid.
If some multiprocessor/optimizing compiler issue won't allow a complete
update/read of one data structure prior the update/read of the other,
it breaks. I'm sure there's a word for this property, but don't know
what it is.
There may also be a very improbable case where two writers can produce
invalid data as seen by reader, but it would require that one
"overtake" the other in exactly the same manner while updating both
records.
More information about the hackers
mailing list