Skip to content

Commit d70e27f

Browse files
authored
gh-112529: Use atomic operations for gcstate->collecting (#112533)
* gh-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.
1 parent 0738b9a commit d70e27f

File tree

1 file changed

+168
-184
lines changed

1 file changed

+168
-184
lines changed

0 commit comments

Comments
 (0)