Skip to content

Commit

Permalink
pythongh-112529: Use atomic operations for gcstate->collecting (pyt…
Browse files Browse the repository at this point in the history
…hon#112533)

* pythongh-112529: Use atomic operations for `gcstate->collecting`

The `collecting` field in `GCState` is used to prevent overlapping garbage
collections within the same interpreter. This is updated to use atomic
operations in order to be thread-safe in `--disable-gil` builds.

The GC code is refactored a bit to support this. More of the logic is pushed
down to `gc_collect_main()` so that we can safely order the logic setting
`collecting`, the selection of the generation, and the invocation of callbacks
with respect to the atomic operations and the (future) stop-the-world pauses.

The change uses atomic operations for both `--disable-gil` and the default
build (with the GIL) to avoid extra `#ifdef` guards and ease the maintenance
burden.
  • Loading branch information
colesbury authored and aisk committed Feb 11, 2024
1 parent e2eb364 commit 190a5f4
Showing 1 changed file with 168 additions and 184 deletions.

0 comments on commit 190a5f4

Please sign in to comment.