Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Velká řada funkcí přebírá jako jeden ze svých parametrů adresu proměnné, ke které se má přistupovat pomocí instrukce pro interlockovaný procesor. Jedná se o atomické instrukce pro čtení do mezipaměti a pokud se operandy používají nesprávně, jsou výsledkem velmi drobných chyb.
K identifikaci parametrů funkce jako vzájemně uzamčeného operandu použijte následující poznámku.
| Anotace uzamčeného operandu | Popis |
|---|---|
| _Interlocked_operand_ | Parametr funkce s poznámkami je cílový operand jedné z vzájemně uzamčených funkcí. Tyto operandy musí mít specifické další vlastnosti. |
Očekává se, že parametry funkce anotované s _Interlocked_operand_ budou sdíleny mezi procesy. Proměnné použité s touto poznámkou musí:
Deklarovat nestálou.
Nejedná se o místní proměnnou. Použití místní proměnné obvykle značí nedorozumění záměru funkce. I když je nějak sdílená místní proměnná, požadavky na stránkování systému ztěžují adresování proměnných v jiném procesu.
Nesmí být přístupná, ledaže pomocí vzájemně zablokované funkce. Bez explicitního použití zamčené funkce může operace přistupovat k zastaralým datům, může probíhat pouze v cache paměti jednoho procesoru nebo může být zpožděna při propagaci do zbytku systému.
Systémové funkce jsou již opatřeny poznámkami pro vzájemně uzamčené operandy.
Následující příklad ukazuje anotaci pro funkci InterlockedExchange . Tato poznámka určuje, že parametr Target musí být vždy přístupný pomocí vzájemně uzamčené operace.
LONG
InterlockedExchange (
_Inout_ _Interlocked_operand_ LONG volatile *Target,
_In_ LONG Value
);