Безопасно ли копировать постоянную глобальную std :: exception_ptr без блокировки?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Безопасно ли копировать постоянную глобальную std :: exception_ptr без блокировки?

Сообщение Anonymous »

Насколько я понимаю, общее правило для типов в стандартной библиотеке C ++, что использование их одновременно без блокировки в порядке, пока все одновременные операции считываются
Я знаю «Это внутренне, std :: exception_ptr реализовано с помощью какого -то ссылочного подсчета, поэтому копирование его фактически включает в себя какую -то запись (ы), это проблема для кода, такого как следующее?
// Global scope
std::exception_ptr GetSharedException() noexcept
{
try
{
static const std::exception_ptr result(std::make_exception_ptr(CreateException()))
return result;
}
catch (...)
{
return std::current_exception();
}
}

// Some function which can be running on multiple threads concurrently
void foo() noexcept
{
// Do stuff
if (bar())
consume(GetSharedException())
// Do more stuff
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -o-locking
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»