При выходе волокна разрушаются объекты, связанные с каждым<fiber_specific_ptr>экземпляром. По умолчанию объект, на который указывает указатель<p>, разрушается путем вызова<deletep>, но это может быть отменено для конкретного примера<fiber_specific_ptr>, обеспечивая рутину очистки<func>для конструктора. В этом случае объект уничтожается путем вызова<func(p)>. Функции очистки называются в неуказанном порядке.
Постройте<fiber_specific_ptr>объект для хранения указателя на объект типа<T>, специфичный для каждого волокна. Когда<reset()>вызывается, или волокно выходит,<fiber_specific_ptr>вызывает<fn(this->get())>. Если используется конструктор без аргументов, по умолчанию<delete>функция очистки будет использоваться для уничтожения волоконно-локальных объектов.
Все специфические экземпляры волокна, связанные с этим<fiber_specific_ptr>(кроме, возможно, одного, связанного с этим волокном), должны быть нульптр.
Effects:
Призывает<this->reset()>очистить связанное значение для текущего волокна и разрушает<*this>.
Remarks:
Требование является ограничением реализации. Если деструктор обещал удалить экземпляры для всех волокон, реализация будет вынуждена поддерживать список всех волокон, имеющих связанный конкретный ptr, что противоречит цели конкретных данных волокна. В общем,<fiber_specific_ptr>должны пережить волокна, которые его используют.
Note
Необходимо позаботиться о том, чтобы любые волокна, все еще работающие после того, как экземпляр<fiber_specific_ptr>был уничтожен, не вызывали каких-либо функций члена на этом экземпляре.
Если<this->get()!=new_value>и<this->get()>не<nullptr>, то ссылайтесь<deletethis->get()>или<fn(this->get())>соответственно. Храните<new_value>как указатель, связанный с текущим волокном.
Postcondition:
<this->get()==new_value>
Throws:
Исключение, поднятое при очистке от прежней стоимости.
Статья Fiber local storage раздела Chapter 1. Fiber Chapter 1. Fiber может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.