git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a53c06a)
Remove cautions about using volatile from spin.h.
2015年10月16日 18:06:22 +0000 (14:06 -0400)
2015年10月16日 18:06:22 +0000 (14:06 -0400)
Commit 0709b7ee72e4bc71ad07b7120acd117265ab51d0 obsoleted this comment
but neglected to update it.

Thomas Munro


diff --git a/src/include/storage/spin.h b/src/include/storage/spin.h
index dc6856e4aca456ae4ce3898094ffbef90b944cfe..4674f48164e474dbb0d6dec0105aa15235a073e0 100644 (file)
--- a/src/include/storage/spin.h
+++ b/src/include/storage/spin.h
@@ -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
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /