]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-142518: Define lock-free and per-object lock (GH-144548) (#144707)
authorLysandros Nikolaou <lisandrosnik@gmail.com>
Wed, 11 Feb 2026 17:08:49 +0000 (18:08 +0100)
committerGitHub <noreply@github.com>
Wed, 11 Feb 2026 17:08:49 +0000 (18:08 +0100)
(cherry picked from commit 12dbae4c02dac197330d5bfa650b495e962aba6d)

Doc/glossary.rst

index 030c4968b42513cbebecc8634ebbdba0de1c6cf7..488bcc532587651ac3a66c35d5c7e8eb217ff1b4 100644 (file)
@@ -882,6 +882,16 @@ Glossary
       to locks exist such as queues, producer/consumer patterns, and
       thread-local state. See also :term:`deadlock`, and :term:`reentrant`.
 
+   lock-free
+      An operation that does not acquire any :term:`lock` and uses atomic CPU
+      instructions to ensure correctness. Lock-free operations can execute
+      concurrently without blocking each other and cannot be blocked by
+      operations that hold locks. In :term:`free-threaded <free threading>`
+      Python, built-in types like :class:`dict` and :class:`list` provide
+      lock-free read operations, which means other threads may observe
+      intermediate states during multi-step modifications even when those
+      modifications hold the :term:`per-object lock`.
+
    loader
       An object that loads a module.
       It must define the :meth:`!exec_module` and :meth:`!create_module` methods
@@ -1139,6 +1149,16 @@ Glossary
       <faq-argument-vs-parameter>`, the :class:`inspect.Parameter` class, the
       :ref:`function` section, and :pep:`362`.
 
+   per-object lock
+      A :term:`lock` associated with an individual object instance rather than
+      a global lock shared across all objects. In :term:`free-threaded
+      <free threading>` Python, built-in types like :class:`dict` and
+      :class:`list` use per-object locks to allow concurrent operations on
+      different objects while serializing operations on the same object.
+      Operations that hold the per-object lock prevent other locking operations
+      on the same object from proceeding, but do not block :term:`lock-free`
+      operations.
+
    path entry
       A single location on the :term:`import path` which the :term:`path
       based finder` consults to find modules for importing.