Files
swift-mirror/stdlib/public/stubs/Exclusivity/SingleThreaded.cpp
Doug Gregor b12ad088ce [Embeddded] Make _swift_(get|set)ExclusivityTLS platform-provided
Swift's dynamic exclusivity checking relies on two functions,
_swift_getExclusivityTLS and _swift_setExclusivityTLS, to properly
deal with multi-threaded contexts. In the non-Embedded standard
library, these are provided by the Swift runtime.

For Embedded Swift, we cannot rely on having thread-local storage.
Instead, require the platform to provide these two entrypoints. To
make things simpler, we offer two implementations one can link in:

- libswiftExclusivitySingleThreaded.a: single-threaded implementation
- libswiftExclusivityC11ThreadLocal.a: multi-threaded implementation that
uses C11 thread-locals

Embedded Swift programs using dynamic exclusivity can link in one of
these libraries, or can implement its own versions of these two
functions. A platform can choose to provide them if it has different
mechanisms for thread-local storage.

This makes dynamic exclusivity checking generally usable in Embedded
Swift, rdar://159115910.
2026-01-20 20:07:42 -08:00

1.1 KiB