Threading a game can be hard work when you have lots of heterogeneous tasks to balance. In this session, you'll learn how to take a simple single-threaded series of semi-independent tasks, break them up, and solve them (with dependencies). The outcome is to get a coherent, serial result from the individual tasks. This session covers tasks vs. threads, thread pools, task priorities, how to handle dependencies, touch utilizing DX11 deferred contexts, and how to get an entire codebase running efficiently on a system from 1 to N cores. This session will also include live demos of code that will be given away.