https://github.com/python/cpython/commit/0cd9bacb8ad41fe86f95b326e9199caa749539eb
commit: 0cd9bacb8ad41fe86f95b326e9199caa749539eb
branch: main
author: Dino Viehland <[email protected]>
committer: DinoV <[email protected]>
date: 2024-01-29T09:47:54-08:00
summary:

gh-112075: Dictionary global version counter should use atomic increments 
(#114568)

Dictionary global version counter should use atomic increments

files:
M Include/internal/pycore_dict.h

diff --git a/Include/internal/pycore_dict.h b/Include/internal/pycore_dict.h
index d96870e9197bbf..b4e1f8cf1e320b 100644
--- a/Include/internal/pycore_dict.h
+++ b/Include/internal/pycore_dict.h
@@ -209,8 +209,14 @@ static inline PyDictUnicodeEntry* 
DK_UNICODE_ENTRIES(PyDictKeysObject *dk) {
 #define DICT_VERSION_INCREMENT (1 << DICT_MAX_WATCHERS)
 #define DICT_VERSION_MASK (DICT_VERSION_INCREMENT - 1)
 
+#ifdef Py_GIL_DISABLED
+#define DICT_NEXT_VERSION(INTERP) \
+    (_Py_atomic_add_uint64(&(INTERP)->dict_state.global_version, 
DICT_VERSION_INCREMENT) + DICT_VERSION_INCREMENT)
+
+#else
 #define DICT_NEXT_VERSION(INTERP) \
     ((INTERP)->dict_state.global_version += DICT_VERSION_INCREMENT)
+#endif
 
 void
 _PyDict_SendEvent(int watcher_bits,

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to