Categories


Archives


Recent Posts


Categories


On Tweleve Years of Grand Central Dispatch

astorm

Frustrated by Magento? Then you’ll love Commerce Bug, the must have debugging extension for anyone using Magento. Whether you’re just starting out or you’re a seasoned pro, Commerce Bug will save you and your team hours everyday. Grab a copy and start working with Magento instead of against it.

Updated for Magento 2! No Frills Magento Layout is the only Magento front end book you'll ever need. Get your copy today!

What went wrong with the libdispatch. A tale of caution for the future of concurrency..

This post from “Thomas“, the creator of the OS X/Mac OS utility TimeMachineEditor crossed my desk the other day. I remember when Apple announced Grand Central Dispatch (the branded name for libdispatch) as a thing, and being surprised that desktop systems developers were borrowing patterns (queues) that seemed to work well in the world of web applications. As I’m not an Apple developer I filed this away in my head as an example of asynchronous programming and went about my life.

Beyond the specific points raised by Thomas, this is a good example of be careful what your vendor tells you. It sounds like Grand Central Dispatch was initially oversold by Apple’s engineering and marketing departments. Not that it’s not a useful system, but that it’s not the end all be all “turn off your brain we’ve got this for you” concurrency solution everyone was looking for. Put another way — with libdispatch you’re swapping one set of problems for another. That’s a pattern you’ll end up seeing over and over again if you stick around professional software development circles long enough.

If you are an Apple developer it looks like Thomas also has a list of tips/best-practices for using libdispatch efficiently and (as usual) Michael Tsai’s website has a nice roundup of posts from Apple developer community on the topic.

Copyright © Alana Storm 1975 – 2023 All Rights Reserved

Originally Posted: 1st December 2020

email hidden; JavaScript is required