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.

Σε ένα σύστημα για τις ερωτήσεις βάσεων δεδομένων, μια κατευθυνόμενη γραφική παράσταση των λογικά διασυνδεμένων στόχων αντιπροσωπεύει ένα σχέδιο εκτέλεσης για την εκτέλεση μιας διευκρινισμένης ερώτησης βάσεων δεδομένων. Ένα ζευγάρι των σειρών αναμονής αποθηκεύεται σε μια μνήμη υπολογιστών για κάθε ζευγάρι των διασυνδεμένων στόχων στην κατευθυνόμενη γραφική παράσταση. Μια από τις σειρές αναμονής ανά κάθε ζευγάρι είναι μια κάτω σειρά αναμονής για την αποστολή των αιτημάτων από έναν στόχο γονέων σε έναν στόχο παιδιών, και άλλη είναι μια επάνω σειρά αναμονής για την αποστολή των απαντήσεων από το στόχο παιδιών στο στόχο γονέων. Κάθε σειρά αναμονής είναι ένας κυκλικός απομονωτής και περιλαμβάνει έναν επικεφαλής δείκτη που δείχνουν μια επόμενη θέση στη σειρά αναμονής που διαβάζεται, και έναν δείκτη ουρών που δείχνει μια επόμενη θέση στη σειρά αναμονής στην οποία τα στοιχεία μπορούν να γραφτούν. Κάθε στόχος ελέγχει ότι μια σειρά αναμονής δεν είναι πλήρης πρίν γράφει τα στοιχεία σε εκείνη την σειρά αναμονής, και ελέγχει ότι η σειρά αναμονής αμφιθαλών δεν είναι κενή πρίν διαβάζει τα στοιχεία από τη σειρά αναμονής αμφιθαλών. Επιπλέον, ένας στόχος ενημερώνει το δείκτη ουρών για μια σειρά αναμονής μόνο αφού έχει γράψει τα στοιχεία στη θέση στη σειρά αναμονής στην οποία ο δείκτης ουρών ενημερώνεται, ώστε να εξασφαλιστεί ότι ο άλλος στόχος δεν προσπαθεί να διαβάσει ότι η θέση σειρών αναμονής μέχρι τα νέα στοιχεία έχει γραφτεί σε τον. Αυτό το πρωτόκολλο σειρών αναμονής είναι επαρκές, από το, ώστε να εξασφαλιστεί ότι οι στόχοι δεν κάνουν τη συγκρουόμενη χρήση των σειρών αναμονής, παρά το γεγονός ότι οι σειρές αναμονής είναι στην κοινή μνήμη και δεν προστατεύονται από έναν μηχανισμό συγχρονισμού.

 
Web www.patentalert.com

< (none)

< Detection and characterization of microorganisms

> Business service platform, network, and system

> (none)

~ 00025