Nowy idiom programistyczny jest opisany w:

// Źle działa pod Java 1.4 i wcześniejszą class Foo { private volatile Helper helper = null; public Helper getHelper() { if (helper == null) { synchronized(this) { if (helper == null) helper = new Helper();

return helper;

// inne funkcje i metody... }

Zaproponowano wiele wersji idiomu blokady z podwójnym zatwierdzeniem nieużywających jawnych metod w stylu volatile lub synchronizacji. Wszystkie są błędne.

Implementacja w Microsoft Visual C++ Blokada z podwójnym zatwierdzeniem może być zaimplementowana w Visual C++ 2005, jeśli wskaźnik na zasób jest zadeklarowany ze słowem kluczowym C++ volatile. Visual C++ 2005 gwarantuje, iż zmienna typu volatile zachowa się podobnie jak w J2SE 5.0. Takiej gwarancji nie ma w poprzednich wersjach. Jeśli wskaźnik na zasób jest widoczny w dużych partiach kodu i jest typu volatile, to wtedy może na tym ucierpieć wydajność kodu.

Zobacz też Bariera pamięci

Przypisy