sync_per_thread – třída
Popisuje synchronizační filtr , který poskytuje samostatný objekt mezipaměti pro každé vlákno.
Syntaxe
template <class Cache>
class sync_per_thread
Parametry
Cache
Typ mezipaměti přidružené k synchronizačnímu filtru. Může to být cache_chunklist
, cache_freelist
nebo cache_suballoc
.
Poznámky
Alokátory, které používají sync_per_thread
, můžou porovnávat stejné, i když bloky přidělené v jednom vlákně nelze uvolnit z jiného vlákna. Při použití jednoho z těchto alokátorů bloky paměti přidělené v jednom vlákně by neměly být viditelné pro ostatní vlákna. V praxi to znamená, že ke kontejneru, který používá jeden z těchto alokátorů, by měl přistupovat jenom jedno vlákno.
Členské funkce
Členová funkce | Popis |
---|---|
allocate | Přidělí blok paměti. |
uvolnit | Uvolní zadaný počet objektů od úložiště počínaje zadanou pozicí. |
equals | Porovná dvě mezipaměti pro rovnost. |
Požadavky
Záhlaví:<alokátory>
Namespace: stdext
sync_per_thread::přidělení
Přidělí blok paměti.
void *allocate(std::size_t count);
Parametry
count
Počet prvků v poli, které se mají přidělit.
Poznámky
Členová funkce vrátí výsledek volání cache::allocate(count)
objektu mezipaměti, který patří do aktuálního vlákna. Pokud nebyl pro aktuální vlákno přidělen žádný objekt mezipaměti, nejprve ho přidělí.
sync_per_thread::d eallocate
Uvolní zadaný počet objektů od úložiště počínaje zadanou pozicí.
void deallocate(void* ptr, std::size_t count);
Parametry
ptr
Ukazatel na první objekt, který se má uvolnit z úložiště.
count
Počet objektů, které se mají uvolnit z úložiště.
Poznámky
Členová funkce volá deallocate
objekt mezipaměti patřící do aktuálního vlákna. Pokud nebyl pro aktuální vlákno přidělen žádný objekt mezipaměti, nejprve ho přidělí.
sync_per_thread::equals
Porovná dvě mezipaměti pro rovnost.
bool equals(const sync<Cache>& Other) const;
Parametry
Cache
Objekt mezipaměti filtru synchronizace.
Další
Objekt mezipaměti, který se má porovnat s rovností.
Návratová hodnota
false
Pokud nebyl pro tento objekt přidělen žádný objekt mezipaměti nebo pro jiné v aktuálním vlákně. V opačném případě vrátí výsledek použití operator==
na dva objekty mezipaměti.