I think most of you guys know GCD pretty well. Basically, GCD is a high level API to handle multi-threading operations. We use GCD almost on daily basis to switch thread and execute codes like:
DispatchQueue.main.async { //execute some codes here }
//switch to main queue and execute codes asynchronously
DispatchQueue.main.sync { //execute some codes here }
//switch to main queue and execute codes synchronously