Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma operação adquirirá semântica se outros processadores sempre verão seu efeito antes do efeito de qualquer operação subsequente. Uma operação tem semântica de lançamento se outros processadores verão o efeito de cada operação anterior antes do efeito da operação em si.
Considere o seguinte exemplo de código:
a++;
b++;
c++;
Do ponto de vista de outro processador, as operações anteriores podem parecer ocorrer em qualquer ordem. Por exemplo, o outro processador pode ver o incremento de b antes do incremento de a.
Operações atômicas, como as que as rotinas InterlockedXxx executam, têm semântica de aquisição e liberação por padrão. No entanto, os processadores baseados em Itanium executam operações que só adquirem ou apenas liberam semântica mais rapidamente do que aquelas que têm ambos. Portanto, o sistema fornece versões InterlockedXxxAcquire e InterlockedXxxRelease de algumas das rotinas InterlockedXxx.
Por exemplo, a rotina InterlockedIncrementAcquire usa semântica de aquisição para incrementar uma variável. Se você reescreveu o exemplo de código anterior da seguinte maneira:
InterlockedIncrementAcquire(&a);
b++;
c++;
outros processadores sempre veriam o incremento de a antes dos incrementos de b e c.
Da mesma forma, a rotina InterlockedIncrementRelease usa semântica de versão para incrementar uma variável. Se você reescreveu o exemplo de código mais uma vez, da seguinte maneira:
a++;
b++;
InterlockedIncrementRelease(&c);
outros processadores sempre veriam os incrementos de a e b antes do incremento de c.
Se o processador não fornecer instruções que tenham semântica apenas de aquisição ou apenas de liberação, o sistema usará a rotina correspondente que forneça ambos os tipos de semântica. Por exemplo, em processadores x86, InterlockedIncrementAcquire e InterlockedIncrementRelease são equivalentes a InterlockedIncrement.
A tabela a seguir lista as rotinas que têm variantes somente de aquisição e somente lançamento.
| Rotina Xxx interligada | Versão Acquire-Semantics-Only | Versão Release-Semantics-Only |
|---|---|---|