Настраиваемый локальный распределитель потоков для boost :: option type

Я реализовал пул памяти на основе стандартного интерфейса C ++.

template <typename T, size_t Cap = 8>
class SingularAllocator {

// member declarations ...

public:

inline SingularAllocator();                             // Constructor.
inline ~SingularAllocator();                            // Destructor.

inline T* allocate(const size_t n=1) ;                  // Allocate an entry of type T.
inline void deallocate(T*, const size_t n=1);           // Deallocate an entry of type T.

template <typename... ArgsT>
inline void construct(T*, ArgsT&&...);                  // Construct an item.
inline void destroy(T*);                                // Destroy an item.

private:

thread_local Mempool _slot;

// member implementations ...
}

Для простоты приведенный фрагмент показывает только интерфейс. Идея состоит в том, чтобы использовать thread_local ключевое слово, чтобы включить пул памяти для каждого потока. Мой вопрос, как я могу использовать это, чтобы каждый boost::variant объект создан из моего пула? Для STL как std::vector, это довольно просто, так как аргумент шаблона занимает дополнительное поле распределителя. Тем не менее, я не видел этого в boost::variant,

boost::variant<int, string, OtherClass> MyStuf; // How to create this variant from my memory pool (per-thread).

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]