sync_per_thread クラス
スレッドごとに個別のキャッシュ オブジェクトを提供する同期フィルターを記述します。
構文
template <class Cache>
class sync_per_thread
パラメーター
キャッシュ
同期フィルターに関連付けられているキャッシュの型。 cache_chunklist
、cache_freelist
、または cache_suballoc
を指定できます。
解説
sync_per_thread
を使用するアロケーターは、1 つのスレッドに割り当てられたブロックの割り当てを別のスレッドから解除できなくても、比較したときに等しい結果になりえます。 これらのアロケーターのいずれかを使用するときに、1 つのスレッドに割り当てられているメモリー ブロックが他のスレッドから参照できないようにする必要があります。 つまり、これらアロケーターのいずれかを使用するコンテナーは 1 つのスレッドによってのみアクセスする必要があります。
メンバー関数
メンバー関数 | 説明 |
---|---|
allocate | メモリのブロックを割り当てます。 |
deallocate | 指定した位置で始まるストレージから、指定された数のオブジェクトを解放します。 |
equals | 2 つのキャッシュが等しいかどうかを比較します。 |
要件
ヘッダー: <allocators>
名前空間: stdext
sync_per_thread::allocate
メモリのブロックを割り当てます。
void *allocate(std::size_t count);
パラメーター
count
割り当てられる配列内の要素の数。
解説
メンバー関数は、呼び出しの結果を、現在のスレッドに属しているキャッシュ オブジェクトの cache::allocate(count)
に返します。 現在のスレッドにキャッシュ オブジェクトが割り当てられていない場合は、最初にキャッシュ オブジェクトを割り当ててください。
sync_per_thread::d eallocate
指定した位置で始まるストレージから、指定された数のオブジェクトを解放します。
void deallocate(void* ptr, std::size_t count);
パラメーター
ptr
記憶域から割り当てを解除される最初のオブジェクトへのポインター。
count
記憶域から割り当てを解除されるオブジェクトの数。
解説
メンバー関数は、現在のスレッドに属しているキャッシュ オブジェクトの deallocate
を呼び出します。 現在のスレッドにキャッシュ オブジェクトが割り当てられていない場合は、最初にキャッシュ オブジェクトを割り当ててください。
sync_per_thread::equals
2 つのキャッシュが等しいかどうかを比較します。
bool equals(const sync<Cache>& Other) const;
パラメーター
キャッシュ
同期フィルターのキャッシュ オブジェクト。
その他
等しいかどうかを比較するキャッシュ オブジェクト。
戻り値
このオブジェクトまたは現在のスレッドの Other にキャッシュ オブジェクトが割り当てられていない場合は false
です。 そうでない場合は、operator==
を 2 つのキャッシュ オブジェクトに割り当てた結果を返します。