mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Remove cautions about using volatile from spin.h.
Commit 0709b7ee72
obsoleted this comment
but neglected to update it.
Thomas Munro
This commit is contained in:
parent
a53c06a13e
commit
78652a3332
@ -25,15 +25,10 @@
|
||||
* Callers must beware that the macro argument may be evaluated multiple
|
||||
* times!
|
||||
*
|
||||
* CAUTION: Care must be taken to ensure that loads and stores of
|
||||
* shared memory values are not rearranged around spinlock acquire
|
||||
* and release. This is done using the "volatile" qualifier: the C
|
||||
* standard states that loads and stores of volatile objects cannot
|
||||
* be rearranged *with respect to other volatile objects*. The
|
||||
* spinlock is always written through a volatile pointer by the
|
||||
* spinlock macros, but this is not sufficient by itself: code that
|
||||
* protects shared data with a spinlock MUST reference that shared
|
||||
* data through a volatile pointer.
|
||||
* Load and store operations in calling code are guaranteed not to be
|
||||
* reordered with respect to these operations, because they include a
|
||||
* compiler barrier. (Before PostgreSQL 9.5, callers needed to use a
|
||||
* volatile qualifier to access data protected by spinlocks.)
|
||||
*
|
||||
* Keep in mind the coding rule that spinlocks must not be held for more
|
||||
* than a few instructions. In particular, we assume it is not possible
|
||||
|
Loading…
Reference in New Issue
Block a user