Use rcu_ptr with a preallocated block. Something like rcu_ptr<N> , where N states how many instances can be put on the preallocated storage. TBD: What to do when the storage is full? - throw - fail - wait - heap allocate