Tohle dávno neplatí. Například windows používá low-fragmentation heap To je heap, kdy je paměť rozdělena na pevné bloky podle normované velikosti. Přidělení bloku je atomická operace, nic se nezamyká. Jen když dojdou předpřipravené bloky, rozdělí se další větší blok. Je to tak ďábelsky rychlé, že to lze vyrovnat jen maximálně pool alokátorem, to je alokátor, který reusuje uvolněné bloky. Drží je ve spojovém seznamu a ještě rozdělené podle velikosti. Alokace je opět atomické vydání bloku z listu. Řešit alokátor per thread a domnívat se, že to je rychlejší... dávno ne!
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366750(v=vs.85).aspx
Možná že v linuxu jsou horší časy, nevím. Každopádně když tak na to nasazuju ten alokátor s poolem a reuseuju uvolněné bloky. Je to rychlý jednoduchý primitivní mt safe a funguje samo.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 50 630×
Přečteno 23 688×
Přečteno 22 738×
Přečteno 20 718×
Přečteno 17 626×