Comments (5)
Comment by Daniel A. Steffen (JIRA)
the .rawValue is opaque and not guaranteed to be comparable (e.g. it does not compare numerically for DispatchWalltime)
from swift-corelibs-libdispatch.
Out of curiosity (I'm not part of the Dispatch team) when do you need to compare them?
from swift-corelibs-libdispatch.
Jordan:
I compared dispatch_time_t
values in a simple rate-limiting algorithm of sorts. When issuing an asynchronous task, I'd save a target time (from dispatch_time(DISPATCH_TIME_NOW, offset)
), and in the callback I'd compare it to the current time (from dispatch_time(DISPATCH_TIME_NOW, 0)
). If the current time is too early (smaller), I'd post the result in a dispatch_after block, otherwise I'd post it immediately.
This could be done in other ways, but since dispatch_time_t is the native representation for libdispatch, this was straightforward (and has behaved as I expected in testing.)
Daniel:
As far as I can tell the values returned from the old dispatch_time()
function were comparable; since the new system splits DispatchTime and DispatchWallTime into separate types, comparability is now achievable as a public feature.
from swift-corelibs-libdispatch.
Comment by Daniel A. Steffen (JIRA)
yes, I'm not saying that it is not achievable, I agree that it is.
I was warning you that using the workaround of comparing .rawValue is not guaranteed to work going forward (the raw value encoding is private) (and dispatch_time_t in the old API was definitely not comparable since multiple representations were mixed together)
from swift-corelibs-libdispatch.
Comment by Matt Wright (JIRA)
Addressed in 8ac413a0b5a9f927f44438df3376a7757f607953.
from swift-corelibs-libdispatch.
Related Issues (20)
- [SR-15686] Dispatch on Linux incorrectly inherits random thread names HOT 1
- [SR-15545] Linux: DispatchTime's advanced() is not implemented HOT 1
- [SR-15528] Can't convert DispatchQueue to dispatch_queue_t on Linux
- [SR-15166] Crash in _dispatch_wait_for_enqueuer on Android armeabi-v7a HOT 5
- [SR-15133] Crash when deallocating a never-resumed DispatchSourceTimer HOT 7
- [SR-15126] Swift Package Manager (SPM) on Windows gets stuck after displaying "...\swiftxml-manifest.exe -handle ..." HOT 14
- Swift Actor/Tasks concurrency on Linux - Lock contention in rand() HOT 18
- dispatch.h incompatible with gcc / g++ 12 HOT 18
- Add `Sendable` conformances to thread-safe types HOT 1
- DispatchTime.distance(to:) is not implemented
- `DispatchTimeInterval` is not `Sendable` HOT 4
- Implementing an alternative to Block_copy
- GitHub Releases HOT 12
- bug: There is no way to get current queue / current queue label under Linux HOT 2
- MacOS 14: Crash on dispatch_activate after fork
- Test dispatch_after flakiness
- DispatchIO.read spinning while pipe is open on Windows HOT 17
- Re-adding dispatch source for socket file descriptors results in reuse and incorrect update of dispatch_muxnote_t on Ubuntu, Android, and Windows HOT 5
- Linux: DispatchTimeInterval not Equatable
- Can't link libdispatch in C language
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swift-corelibs-libdispatch.