Соображения безопасности потока с помощью std :: shared_ptr
следовать отрезок. Это гарантирует, что право собственности на объект отслеживается точно, независимо от количества потоков, получающих его. Это устраняет риск висящих указателей и гарантирует, что объект будет удален, когда последнее указы, указывающее на него SHARED_PTR. Когда ссылка на ared_ptr достигает нуля, объект удаляется. Это гарантирует, что никакие многочисленные потоки пытаются одновременно удалить один и тот же объект, предотвращая неопределенное поведение.
поток объекта
, в то время как std :: shared_ptr обеспечивает безопасность потока для справочного подсчета и удаления, важно признать, что он не влияет на безопасность потока объекта, который он держит. Если сам объект не реализован как безопасный для потока, одновременный доступ из нескольких потоков может привести к условиям гонки или другим вопросам. ]
vared_ptr Reset и Visebility
рассмотрим следующий код фрагмент: shared_ptr а (1); 1); shared_ptr b (a), c (a), d (a); d.reset (new a (10));
сброс shared_ptr D заменит существующий экземпляр A на новый. Тем не менее, это изменение будет видно только в потоке IV, удерживающего shared_ptr d. Поток, удерживающие shared_ptrs a, b и c, будут продолжать ссылаться на исходный экземпляр A. Это демонстрирует, что shared_ptr reset () не влияет на видимость объекта по потокам.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3