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