Does the following code run on the main thread? Does “main queue” refer to the main thread?
dispatch_async(dispatch_get_main_queue(),
^{
// Some code
});
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The async part of dispatch async vs sync is different than concurrent vs serial. Async means that the function returns immediately, sync means that it’ll wait until the block is executed. Since the main thread/queue is serial, things are going to get executed in order – I believe this means that since you’re asking it to async dispatch on the same thread you’re dispatching from, it’ll return immediately, wait till the end of the current run loop and anything else in the queue, and then execute your block.
This is more useful for inside a queue than it is on the main thread – you can process your data, let the UI know to update, and continue processing without waiting for everything to redraw, etc. That’s why you’ll often see a dispatch_async call to the main thread inside another dispatch_async(concurrent queue) instead of just a dispatch_sync.