One embodiment of the present invention provides a system that facilitates
avoiding locks by speculatively executing critical sections of code.
During operation, the system allows a process to speculatively execute a
critical section of code within a program without first acquiring a lock
associated with the critical section. If the process subsequently
completes the critical section without encountering an interfering data
access from another process, the system commits changes made during the
speculative execution, and resumes normal non-speculative execution of the
program past the critical section. Otherwise, if an interfering data
access from another process is encountered during execution of the
critical section, the system discards changes made during the speculative
execution, and attempts to re-execute the critical section.
Uma incorporação da invenção atual fornece um sistema que facilite evitar fechamentos speculatively executando seções críticas do código. Durante a operação, o sistema permite que um processo execute speculatively uma seção crítica do código dentro de um programa sem primeiramente adquirir um fechamento associado com a seção crítica. Se o processo terminar subseqüentemente a seção crítica sem encontrar um acesso interferindo dos dados de um outro processo, o sistema comete as mudanças feitas durante a execução speculative, e recomeça a execução non-non-speculative normal do programa após a seção crítica. Se não, se um acesso interferindo dos dados de um outro processo fosse encontrado durante a execução da seção crítica, as mudanças dos descartes do sistema fizeram durante a execução speculative, e tentativas executar a seção crítica.