Concurrent accesses from multiple threads to the same cell object do not scale well in the free-threaded build. There are two problems:
1) LOAD_DEREF calls PyCell_GetRef, which acquires the per-object lock on the cell instance. We'll need to use _Py_TryXGetRef or similar to safely access the value.
2) PyCell_GetRef returns a strong reference and LOAD_DEREF will need a _PyStackRef to handle objects that use deferred reference counting.
Concurrent accesses from multiple threads to the same
cell
object do not scale well in the free-threaded build. There are two problems:1)
LOAD_DEREF
callsPyCell_GetRef
, which acquires the per-object lock on the cell instance. We'll need to use_Py_TryXGetRef
or similar to safely access the value.2)
PyCell_GetRef
returns a strong reference andLOAD_DEREF
will need a_PyStackRef
to handle objects that use deferred reference counting.Linked PRs