diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-12-23 16:57:18 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-12-23 16:57:18 -0800 |
| commit | 177377b6e356b34bbed40cadca596658d158af6b (patch) | |
| tree | ed7e0a7fa146b8c15044e21f386ec8a8e2977695 /lib/tsan/interception/interception_mac.cpp | |
| parent | 5377b7fb97311448daa3c29a8c8f100656d871ba (diff) | |
| download | zig-177377b6e356b34bbed40cadca596658d158af6b.tar.gz zig-177377b6e356b34bbed40cadca596658d158af6b.zip | |
rework std.ResetEvent, improve std lib Darwin integration
* split std.ResetEvent into:
- ResetEvent - requires init() at runtime and it can fail. Also
requires deinit().
- StaticResetEvent - can be statically initialized and requires no
deinitialization. Initialization cannot fail.
* the POSIX sem_t implementation can in fact fail on initialization
because it is allowed to be implemented as a file descriptor.
* Completely define, clarify, and explain in detail the semantics of
these APIs. Remove the `isSet` function.
* `ResetEvent.timedWait` returns an enum instead of a possible error.
* `ResetEvent.init` takes a pointer to the ResetEvent instead of
returning a copy.
* On Darwin, `ResetEvent` is implemented using Grand Central Dispatch,
which is exposed by libSystem.
stage2 changes:
* ThreadPool: use a single, pre-initialized `ResetEvent` per worker.
* WaitGroup: now requires init() and deinit() and init() can fail.
- Add a `reset` function.
- Compilation initializes one for the work queue in creation and
re-uses it for every update.
- Rename `stop` to `finish`.
- Simplify the implementation based on the usage pattern.
Diffstat (limited to 'lib/tsan/interception/interception_mac.cpp')
0 files changed, 0 insertions, 0 deletions
