The design of the task queue is driven by the following two concerns: ease of use and high performance. In some cases, the user interface are augmented or relaxed so that the performance goals can be met. In this section we discuss these design trade-offs and give the detailed specification of the task queue interface.