The global queue is a background queue and executes its blocks on a non-main thread. The main queue executes its blocks in the main thread.
You must put background jobs that are not related to user interface changes in the global queue, but use the main queue when blocks make changes to the user interface. For example, a very general template is to execute the βworkβ block in the global queue and the work block itself to go back to the main queue in order to update the progress indicator.
source share