Async.background reports/uses queues other than background
damonjones opened this issue · 9 comments
I made a new Swift project (single view controller) and added Async.swift file. I used the following sample code in my viewDidLoad:
Async.background {
println("A: This is run on the \(qos_class_self().description) (expected \(QOS_CLASS_BACKGROUND.description))")
}.main {
println("B: This is run on the \(qos_class_self().description) (expected \(qos_class_main().description)), after the previous block")
}
Running the project multiple times, the results I get are either:
A: This is run on the User Initiated (expected Background)
B: This is run on the Main (expected Main), after the previous block
Or:
A: This is run on the Main (expected Background)
B: This is run on the Main (expected Main), after the previous block
Never do I get the first block reporting that it is running on the background queue.
Xcode 6.1.1 (6A2008a)
Did you run in simulator?
Yes.
I just ran it on a device and the tests passed. Did I miss somewhere where it said that this doesn't work with the simulator?
Possibly relevant: http://stackoverflow.com/a/5172968/3409110
From my own findings: I would like to believe that the simulator is not capable of running multithreaded code, but the problem I have with that, is that if normal GCD works in the simulator and Async doesn't. This sounds like a fixable problem to me. @duemunk: Maybe you should add this discovery to the README to save people some time until the bug is fixed. Just my $0.02
@istx25 If you can make GCD work in these cases where Async doesn't, please let me know. I think GCD works fine with the pre iOS 8 queue classes, but not with the new ones e.g. DISPATCH_QUEUE_PRIORITY_BACKGROUND
.
@damonjones I don't know if it's in the Readme, but it has been a Github issue before #13. I'll update the ready :)