次の方法で共有


sync_per_thread クラス

スレッドごとに個別のキャッシュ オブジェクトを提供する同期フィルターを記述します。

構文

template <class Cache>
class sync_per_thread

パラメーター

キャッシュ
同期フィルターに関連付けられているキャッシュの型。 cache_chunklistcache_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 つのキャッシュ オブジェクトに割り当てた結果を返します。

解説

関連項目

<allocators>