On Apr 19, 2011, at 9:09 AM, Dave Zarzycki wrote:On Apr 19, 2011, at 8:07 AM, Marius Zwicker wrote:I thought the main queue is available as a mean to be sure some blocks execute on the main thread (e.g. when updating the GUI is only possible while being on the main thread).Marius,That is only true if-and-only-if GCD is working in compatibility mode with Cocoa GUI logic, which for legacy reasons is bound to the main thread. If dispatch_main() is called, then GCD turns the main queue into a normal serial queue, with all of the performance advantages thereof.P.S. – This is covered in the dispatch_main() man page:COMPATIBILITYCocoa applications need not call dispatch_main(). Blocks submitted tothe main queue will be executed as part of the "common modes" of theapplication's main NSRunLoop or CFRunLoop. However, blocks submitted tothe main queue in applications using dispatch_main() are not guaranteedto execute on the main thread.