diff options
| author | babenko <[email protected]> | 2026-06-19 14:27:43 +0300 |
|---|---|---|
| committer | babenko <[email protected]> | 2026-06-19 15:12:00 +0300 |
| commit | 89c0e29c8f9ba29ecdc736fefda87286482ac213 (patch) | |
| tree | 1adfbcd839240d8d0155771c6b775fa00a3e5f32 /contrib/python/ipython/py3/IPython/utils | |
| parent | 824b32f6aab5c67b2d39288b1d229eb257f248f0 (diff) | |
Add lock-free per-CPU primitives to library/cpp/yt/rseq
Introduce AddPerCpu and StorePerCpu over an rseq-sharded per-CPU array.
On the x86-64 Linux fast path the update is committed by a hand-rolled
rseq critical section (non-atomic, migration-safe): addq for the 8-byte
accumulate, movq / movdqu for the 8- or 16-byte store. The kernel
restarts the sequence on preemption or migration, and only one thread
runs on a CPU at a time, so no atomic or lock is needed. Off the fast
path (other arches, no kernel rseq) the operation falls back to an
atomic on the slot indexed by sched_getcpu().
A naturally-aligned 8-byte store is single-copy atomic on x86-64, so it
is never observed torn; the 16-byte store may be, which is acceptable for
a last-writer-wins gauge.
commit_hash:6250f6e9e35cf3895ebafe0b534ec12cca50b03b
Diffstat (limited to 'contrib/python/ipython/py3/IPython/utils')
0 files changed, 0 insertions, 0 deletions
