У меня есть член класса, который я хотел бы построить, который должен быть локальным для каждого потока, который обращается к нему.Конструктор требует нескольких аргументов, поэтому я не могу полагаться на инициализацию статического нуля.
class ThreadMem{
public:
ThreadMem(uint32 cachelineSize, uint32 cachelineCount);
};
class ThreadPool{
public:
ThreadPool(uint32 cachelineSize, uint32 cachelineCount){
// I need to prepare the `m_mem` in other threads with these arguments somehow
}
ThreadMem & mem() {
return m_mem;
}
private:
static thread_local ThreadMem m_mem;
};
Где было бы наилучшее место для построения static thread_local ThreadMem ThreadPool::m_mem
, чтобы он создавался только один раз для потока, со значениями, которые конструирующий поток ThreadPool
может вычислять во время выполнения?