Commit Graph

11 Commits

Author SHA1 Message Date
Saleem Abdulrasool
a066a6ecfb Concurrency: support newer dispatch functionality on Windows
This addresses an unintended instance where new dispatch functionality
is not used on Windows as the lookup was never performed.  This limits
the runtime to shared linking which should generally be a safe
assumption on Windows.
2022-11-04 06:56:46 -07:00
Mike Ash
96e965a359 [Concurrency] Use dispatch cooperative queues when available.
These queues are better suited to the concurrency runtime.
2022-09-29 15:46:35 -04:00
Saleem Abdulrasool
a35c7b38dd Concurency: add Windows.h include
The Windows path uses `LoadLibrary` which should use `Windows.h` for the
declaration as per MSDN.  This avoids an unnecessary warning when
building for Windows.
2022-06-19 09:42:21 -07:00
Alastair Houghton
f5bdb858e0 [Threading] Create new threading library and use it.
Moved all the threading code to one place.  Added explicit support for
Darwin, Linux, Pthreads, C11 threads and Win32 threads, including new
implementations of Once for Linux, Pthreads, C11 and Win32.

rdar://90776105
2022-06-07 07:39:51 +01:00
Alex Hoppen
4aa2bbbf06 Revert "Merge pull request #42447 from al45tair/eng/PR-90776105"
This reverts commit 8bcb71140f, reversing
changes made to c4dd271d36.
2022-06-02 18:03:23 +02:00
Alastair Houghton
63a09007a1 [Threading] Create new threading library and use it.
Moved all the threading code to one place.  Added explicit support for
Darwin, Linux, Pthreads, C11 threads and Win32 threads, including new
implementations of Once for Linux, Pthreads, C11 and Win32.

rdar://90776105
2022-05-24 14:57:39 +01:00
Philippe Hausler
c891f34b22 Ensure clocks properly respect leeways and use raw time for calculations for continuous clocks (#58396)
* Ensure clocks properly respect leeways and use raw time for calculations for continuous clocks

* slurp up time calcualtions to inline forms

* ensure the tolerance codepaths get tested as well

* Use task local storage for task sources in leeway based calculations

* use comparison assertions for leeway based calculations

* Whitespace cleanup

* Use the CLOCK_MONOTONIC value for linux to be compatible with linux scheduling for dispatch

* remove incorrect paren in macro check for OpenBSD

* Address feedback and remove stray ;
2022-04-27 15:41:11 -07:00
Philippe Hausler
fd9f7140e2 Resolve a structural calculation error with clocks that prevented sleep to properly transmit to dispatch_after (#42518)
* Resolve a structural calculation error with clocks that prevented sleep to properly transmit to dispatch_after

* Remove dispatch dependency
2022-04-21 00:02:22 -07:00
Philippe Hausler
e675b310f8 [SE-0329] Clock/Instant/Duration (#40609)
* [WIP] Initial draft at v2 Clock/Instant/Duration

* Ensure the literal types for _DoubleWide are able to be at least 64 bits on 32 bit platforms

* static cast timespec members to long

* Remove runtime exports from clock functions

* Export clock functions in implementations as they are in headers

* Clean up internal properties by adding leading underscores, refine availability to a TBD marker macro, and break at 80 lines to match style

* Shift operators to concrete Instant types to avoid complexity in solver resolution

* Adjust diagnostic note and error expectation of ambiguities to reflect new potential solver (perhaps incorrect) solutions

* Update stdlib/public/Concurrency/TaskSleep.swift

Co-authored-by: Karoy Lorentey <klorentey@apple.com>

* [stdlib][NFC] Remove trailing whitespace

* [stdlib] Remove _DoubleWidth from stdlib's ABI

* [stdlib] Strip downd _DoubleWidth to _[U]Int128

* Additional adjustments to diagnostic notes and errors expectation of ambiguities to reflect new potential solver (perhaps incorrect) solutions

* Disable type checker performance validation for operator overload inferences (rdar://33958047)

* Decorate Duration, DurationProtocol, Instant and clocks with @available(SwiftStdlib 9999, *)

* Restore diagnostic ambiguity test assertion (due to availability)

* Add a rough attempt at implementing time accessors on win32

* Remove unused clock id, rename SPI for swift clock ids and correct a few more missing availabilities

* remove obsolete case of realtime clock for dispatch after callout

* Use the default implementation of ~ for Int128 and UInt128

* Ensure diagnostic ambiguitiy applies evenly to all platforms and their resolved types

* Restore the simd vector build modifications (merge damage)

* Update to latest naming results for Instant.Duration

* Updates to latest proposal initializers and accessors and adjust encoding/decoding to string based serialization

* Update availability for Clock/Instant/Duration methods and types to be 5.7

* Correct *Clock.now to report via the correct runtime API

* Ensure the hashing of Duration is based upon the attoseconds hashing

* Avoid string based encoding and resort back to high and low bit encoding/decoding but as unkeyed

* Adjust naming of component initializer to use suffixes on parameters

* Duration decoding should use a mutable container for decoding

* fix up components initializer and decode access

* Add platform base initializers for timespec and tiemval to and from Duration

* Add some first draft documentation for standard library types Duration, DurationProtocol and InstantProtocol

* Another round of documentation prose and some drive-by availability fixes

* InstantProtocol availability should be 5.7

* Correct linux timeval creation to be Int and not Int32

Co-authored-by: Karoy Lorentey <klorentey@apple.com>
2022-02-17 09:32:46 -08:00
John McCall
c45f2c4334 [NFC] Introduce a typedef for job delay in nanoseconds. 2021-11-16 01:50:52 -05:00
John McCall
0bd0f772d8 NFC: move the global executor implementations into their own files 2021-11-15 18:29:08 -05:00