A hybrid locking method for preventing a reduction in the processing speed
of a frequently executed path which includes locking, accessing and
unlocking an object is provided. According to the present invention, at
least one contention bit is introduced. The contention bit, which is
prepared separately from a lock field, is set when a contention occurs in
a light-weight lock, and is cleared when a light-weight lock is shifted to
a heavy-weight lock ("inflate" function). Specifically, if a lock of an
object is managed by storing a bit representing a type of said lock, and
an identifier of a thread having acquired a lock in accordance with a
first type of lock or an identifier of a second type of lock into a
storage area corresponding to the object, in a state where a plurality of
threads exist, following steps are executed: if a first thread attempts to
acquire a lock of an object that has been acquired by a second thread,
determining whether the bit representing the type of the lock of the
object represents the first type of lock; and if the bit represents the
first type of lock, setting a contention bit.
Um método travando hybrid para impedir uma redução na velocidade processando de um trajeto freqüentemente executado que inclua travar, alcançar e destravar um objeto é fornecido. De acordo com a invenção atual, ao menos um bocado da disputa é introduzido. O bocado da disputa, que é preparado separada de um campo do fechamento, é ajustado quando uma disputa ocorre em um fechamento light-weight, e sido cancelou quando um fechamento light-weight é deslocado a um fechamento do pesado-peso ("infle" a função). Especificamente, se um fechamento de um objeto for controlado armazenando um bocado que representa um tipo de fechamento dito, e um identificador de uma linha que adquire um fechamento de acordo com um primeiro tipo de fechamento ou um identificador de um segundo tipo de fechamento em uma área de armazenamento que corresponde ao objeto, em um estado onde um plurality das linhas exista, as seguintes etapas são executadas: se uma primeira linha tentar adquirir um fechamento de um objeto que estivesse adquirido por uma segunda linha, determinando se o bocado que representa o tipo do fechamento do objeto representa o primeiro tipo de fechamento; e se o bocado representar o primeiro tipo de fechamento, ajustando um bocado da disputa.