Czekałem na jakieś szczegóły odnośnie wewnętrznej organizacji alokatora, ale domyślam się, że autor nie chciał odstraszyć osób, które nie programują.
Odnośnie Windows, gamedev chyba nadal używa customowych rozwiązań na tej platformie, ze względu na “jakość” alokatora msvcrt na tej platformie.
Moim zdaniem wyjawił wystarczającą ilość szczegółów. Powinien zainspirować programistów kontrolerów z Europy zachodniej.
Na wszystkich platformach używa się takiego. Szczególnie jeśli używa się C++ i nie ma się nad tym kontroli. Wtedy lokalny może znacznie przyspieszyć program.
U twórców gier populara stała się arena. Czyli coś jak w kontrolerach. Zamiast organizować pamięć, zresetuj.
Jeśli chodzi o blokowanie obszarów pamięci, to w SDL jest taki mechanizm.
Dlaczego programistów z Europy zachodniej? W innych regionach programuje się inaczej?
Blokowanie pamięci jest nawet w WinAPI (Local/GlobalAlloc i Local/GlobalLock).
Co ciekawe, nie kojarzę takiej funkcji w publicznym interfejsie Linuksa.W interfejsach .NETa do C++/CLI można blokować pamięc pamięć na stercie zarządzanej poprzez utworzenie specjalnego typu wskaźnika (pin_ptr).
W SDLu wynika to raczej z innych przyczyn niż fragmentacja (niektóre zasoby są w VRAMie i zmienione dane trzeba kopiować).
Tak, w innych regionach programuje się inaczej. Szczególnie takich, gdzie nie ma kontaktu z branżunią przez różne bariery. Wtedy dużo zależy od kultury. Takie mam doświadczenia. W EZ jeśli zaproponujesz podniesienie jakości, to zwykle spotkasz się z odpowiedzią jak pan od tłumaczeń kiedy zaproponował modyfikację czcionki.
Publicznym wewnętrznym czy userspace?
W SDL jest raczej z przyczyn “odblokowane może zostać użyte”, “zablokowane jest modyfikowane”. Może wynikać z tego, że urządzenie, albo sterownik wybierze/mapuje nowe miejsce na bufor lub zaproponuje inny bufor z puli.
Myślę, że w Europie Zachodniej też wiele zależy od kultury w firmie. Znam przypadki gdzie, wdrażane były usprawnienia proponowane przez szeregowych programistów.
Publicznym wewnętrznym czy userspace?
Nie kojarzę w ogóle takich funkcji w libcu. Z syscalli, jakby zmrużyć mocno oczy, to mmap/mremap wyglądają podobnie, ale to bardziej niskopoziomowe mechanizmy (z granulacją strony).
Tam gdzie byłem, liczyło się gaszenie tysięcy małych pożarów i rozdmuchiwanie kosztów. Ale uznałbym winę po mojej stronie. Wtedy nie wiedziałem jak przekazywać takie informacje. Myślałem, że jak będę miły i zrobię znaczącą część roboty, to wszystko będzie jak w bajce.
W przestrzeni użytkownika działa MMU. Więc nie trzeba takich rzeczy. W ten sposób dba się dopiero w przestrzeni adresów fizycznych.


