IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Проблемы копирования объектов
сообщение
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Попытаюсь раскрыть проблему. В языках, реализующих RAII (несмотря на всё нижесказанное, я всё равно считаю её самой оптимальной парадигмой управления ресурсами), часто принято при помощи некоторых средств делать так, что операция приравнивания, типа a:=b, вызывает некоторые дополнительные действия, например, для того, чтобы скопировать ресурс, на который ссылается какое-нибудь указательное поле a. Или чтобы увеличить счётчик ссылок у ресурса, на которые ссылается это поле. Оба варианта имеют некоторые проблемы. Ведь иногда копирование ресурса не нужно, например, если я делаю a:=b;b:=c, то зачем копировать ресурс, а затем сразу убивать оригинал? Часто ненужные копирования значительно снижают производительность программы.
При использовании счётчика ссылок так получается, что операции, делаемые с копией, влияют на оригинал (динмассивы Дельфи). А это значит, что в начале любой операции над копией надо сначала проверять счётчик ссылок, и, если он больше 1, делать полное копирование объекта (строки Дельфи).
Часто бывает нужно именно просто побайтовое копирование вместо полноценного действия по копированию ресурса.

В общем, проблему я, надеюсь, обрисовал примерно. По С++, вроде, есть целые книги, в которых написано, как не нарыватся на эти проблемы. В Аде можно тупо написать limited, запретив копировать то, что копироваться не должно, но проблема остаётся. Как писать код так, чтобы все места, вызывающие действия "подгона" после побайтного копирования, были сразу заметны невооружённым взглядом? Как писать код так, чтобы минимизировать издержки на копирования?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 23:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name