发明名称 Efficient inter-task queue protocol
摘要 In a system for executing database queries, a directed graph of logically interconnected tasks represents an execution plan for executing a specified database query. A pair of queues are stored in a computer memory for each pair of interconnected tasks in the directed graph. One of the queues in each pair is a down queue for sending requests from a parent task to a child task, and the other is an up queue for sending replies from the child task to the parent task. Each queue is a circular buffer and includes a head pointer that points to a next location in the queue to be read, and a tail pointer that points to a next location in the queue in which data can be written. Each task checks that a queue is not full before writing data into that queue, and checks that the sibling queue is not empty before reading data from the sibling queue. In addition, a task updates the tail pointer for a queue only after it has written data into the location in the queue to which the tail pointer is updated, to ensure that the other task does not attempt to read that queue location until the new data has been written into it. This queue protocol is sufficient, by itself, to ensure that tasks do not make conflicting use of the queues, despite the fact that the queues are in shared memory and are not protected by a synchronization mechanism.
申请公布号 US6341302(B1) 申请公布日期 2002.01.22
申请号 US19980160367 申请日期 1998.09.24
申请人 COMPAQ INFORMATION TECHNOLOGIES GROUP, LP 发明人 CELIS PEDRO
分类号 G06F9/46;(IPC1-7):G06F9/00 主分类号 G06F9/46
代理机构 代理人
主权项
地址