Краткое введение: Я работаю над многопоточным кодом, и мне приходится делиться динамически выделенными объектами между двумя потоками. Чтобы сделать мой код более чистым (и менее подверженным ошибкам), я хочу явно "удалить" объекты в каждом потоке и поэтому хочу использовать shared_ptr
.
Первый вопрос:
Я хочу знать, есть ли в реализации -> operator
в shared_ptr
дополнительные дополнительные служебные данные (например, более крупные, чем unique_ptr
) во время выполнения. Объекты, о которых я говорю, обычно экземпляры longlife копируются только один раз после создания (когда я распространяю их между потоками), тогда я получаю доступ только к этим методам и полям этих объектов.
Я знаю, что shared_ptr
защищает только подсчет ссылок.
Второй вопрос:
Насколько оптимизированы shared_ptr
в libstdС++? Всегда ли он использует мьютекс или использует атомные операции (я сосредоточен на платформах x86 и ARM)?