The execution of an Ada program consists of the execution of one or more tasks. Each task represents a separate thread of control that proceeds independently and concurrently between the points where it interacts with other tasks [AAR95, section 9(1)].
This chapter is organized in two parts. In this first part the main concepts of the Ada tasks are presented. The second part describes the GNAT implementation.