Commit Graph

8 Commits

Author SHA1 Message Date
Allan Shortlidge
851b47fbcd Concurrency: Factor atomic operations in Task.sleep() into a Sendable wrapper.
When building the Swift standard library, the compiler warns:

```
warning: capture of 'wordPtr' with non-sendable type 'UnsafeMutablePointer<Builtin.Word>' in a `@Sendable` closure
```

This diagnostic will become an error in the Swift 6 language mode, so it needs
to be addressed. This PR factors the atomic operations used by the
implementation of `Task.sleep()` into an `@unchecked Sendable` wrapper in order
to convince the compiler that these operations are thread-safe. As an added
benefit, the code is more readable when the atomic operatios are abstracted
away. This refactor intentionally translates the existing implementation into a
wrapper as faithfully as possible and does not attempt to improve on any other
aspects of the implementation, such as the unsafe manual memory allocation and
deallocation.
2024-03-04 09:32:28 -08:00
Konrad `ktoso` Malawski
d82de55ae4 less code duplication 2023-05-24 18:46:57 +02:00
Brandon Williams
e7fc16013e Add Clock.sleep(for:). (#61222) 2023-01-04 20:04:23 -05:00
Nate Chandler
cbaa1b14c8 [Freestanding] Disable Task.sleep. 2022-10-18 11:25:10 -07:00
Ben Rimmington
ce0794cc31 [SE-0329] Update the Task.sleep(for:) method (#60400) 2022-08-12 11:29:07 +01:00
Stephen Celis
8be672a8ae Add Task.sleep(for: Duration) (#59203)
* Add Task.sleep(for: Duration)

* Update TaskSleepDuration.swift

* Update stdlib/public/Concurrency/TaskSleepDuration.swift

Co-authored-by: Alex Martini <amartini@apple.com>

* Update stdlib/public/Concurrency/TaskSleepDuration.swift

Co-authored-by: Alex Martini <amartini@apple.com>

* Fix suggestion.

* Update stdlib/public/Concurrency/TaskSleepDuration.swift

Co-authored-by: Xiaodi Wu <13952+xwu@users.noreply.github.com>

* Update stdlib/public/Concurrency/TaskSleepDuration.swift

Co-authored-by: Alex Martini <amartini@apple.com>
Co-authored-by: Xiaodi Wu <13952+xwu@users.noreply.github.com>
2022-06-27 09:05:36 -07:00
Doug Gregor
41971284fa Fix variable name 2022-03-15 15:18:00 -07:00
Doug Gregor
83d9b68b8e Separate out Duration-based APIs so they aren't in the back-deployment libs
The back-deployed Swift Concurrency library should not contain anything
based on clocks or durations, which aren't always available in the
underlying system. Move that functionality to separate files that are
excluded from the back-deployed concurrency libraries.

This is a partial step to better approximate the back-deployment
libraries. At some point, we'll stop building the back-deployment
libraries entirely and instead use the binaries provided by the
toolchain.

Fixes rdar://89237163.
2022-03-15 15:14:41 -07:00