One embodiment of the present invention provides a system that facilitates entering and exiting a critical section of code for a speculative thread. The system supports a head thread that executes program instructions, and the speculative thread that speculatively executes program instructions in advance of the head thread. During an entry into the critical section by the speculative thread, the system increments a variable containing a number of virtual locks held by the speculative thread. Note that a virtual lock held by the speculative thread is associated with the critical section and is used to keep track of the fact that the speculative thread has entered the critical section. Also note that this virtual lock does not prevent the speculative thread or other threads from entering the critical section. During an exit from the critical section by the speculative thread, the system decrements the variable containing the number of virtual locks held by the speculative thread. The speculative eventually receives a request to perform a join operation with the head thread to merge state associated with the speculative thread into state associated with the head thread. Upon receiving this request, the speculative thread waits to perform the join operation until the variable containing the number of virtual locks held by the speculative thread equals zero. In one embodiment of the present invention, the system additionally waits to perform the join operation until no virtual locks in a list of virtual locks accessed by the speculative thread are held by the other head threads.

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

 
Web www.patentalert.com

< Monitor entry and exit for a speculative thread during space and time dimensional execution

< Monitor entry and exit for a speculative thread during space and time dimensional execution

> Compilation method and system to reuse memory storage instead of allocating it

> Method and apparatus for verifying Enterprise Java Beans

~ 00098