Chapter 24. Threads
A thread is a subprocess of your app that can execute even while other subprocesses are also executing. Such simultaneous execution is called concurrency. The iOS frameworks use threads all the time; if they didn’t, your app would be less responsive to the user — perhaps even completely unresponsive. For the most part, however, they do this behind the scenes on your behalf; you don’t have to worry about threads because the frameworks are worrying about them for you.
For example, suppose your app is downloading something from the network (Chapter 23). This download doesn’t happen all by itself; somewhere, someone is running code that interacts with the network and obtains data. Yet none of that interferes with your code, or prevents the user from tapping and swiping things in your interface. The networking code runs “in the background.” That’s concurrency in action.
This chapter discusses concurrency that involves your code in deliberate use of background threading. It would have been nice to dispense with this topic altogether. Background threads can be tricky and are always potentially dangerous, and should be avoided if possible. However, sometimes you can’t avoid them. So this chapter introduces threads. But beware: background threads entail complications and subtle pitfalls, and can make your code hard to debug. There is much more to threading, and especially to making your threaded code safe, than this chapter can possibly touch on. For detailed information ...