This thesis examines how kernel-level and user-level threads can be applied to job systems. Two approaches of job system implementations will be defined and examined. Measurements of both implementations are performed, evaluated and interpreted.
The organization and functionality of multi-core processors and multithreading is examined to provide a better understanding how kernel-level and user-level threads work. The concept of processes and threads is explored in order to understand how games, respectively game engines, are handled by an operating system (OS). The topic kernel-level and user-level threads is investigated in detail. The Windows implementations of both thread types, and how they are used, is investigated. Different multithreading strategies for game engines are named. One strategy that utilizes processors very well and current game engines integrate is the job system. The definition of a job and job system will be stated. Moreover, the general approach and flow of a job system is examined. Improvements that can be applied to basic job systems is work stealing and lock-free programming.
In order to examine the impact of kernel-level and user-level threads to job systems two approaches are defined and implemented: a pure kernel-level thread approach and a hybrid approach using kernel-level and user-level threads. Both approaches are explained and measurements, concerning time and processor utilization, are performed. The results are interpreted and further improvements are discussed.