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