Здравствуйте, cvetkov, Вы писали:
C>Здравствуйте, AlexRK, Вы писали:
ARK>>А auto_ptr запретит обращение к старой невалидной переменной на этапе компиляции?
C>а это вообще можно сделать?
C>наприме
C>
C>X x = //уникальный указаткль
C>X y = //уникальный указаткль
C>if(random() == 1){
C> y = x;
C>}
C>// вот тут компилятор ругнется на использование x?
C>
У меня нет компилятора Rust, но по логике должно быть именно так.
ARK>У меня нет компилятора Rust, но по логике должно быть именно так.
получается что уникальным указателем нельзя пользоватся после передачи его в любую функцию.
Здравствуйте, cvetkov, Вы писали:
ARK>>У меня нет компилятора Rust, но по логике должно быть именно так. C>получается что уникальным указателем нельзя пользоватся после передачи его в любую функцию.
Ну да, на то он и уникальный. Иначе какая это нафиг уникальность? В этом и смысл.
Надо передавать в другую функцию — копируйте содержимое и передавайте.
Здравствуйте, AlexRK, Вы писали:
ARK>Ну да, на то он и уникальный. Иначе какая это нафиг уникальность? В этом и смысл. ARK>Надо передавать в другую функцию — копируйте содержимое и передавайте.
Здравствуйте, cvetkov, Вы писали:
C>Здравствуйте, AlexRK, Вы писали:
ARK>>Ну да, на то он и уникальный. Иначе какая это нафиг уникальность? В этом и смысл. ARK>>Надо передавать в другую функцию — копируйте содержимое и передавайте.
C>теперь понял. C>а какя от них польза?
Можно передавать большие структуры данных между потоками — без копирования.
Здравствуйте, AlexRK, Вы писали:
C>>теперь понял. C>>а какя от них польза?
ARK>Можно передавать большие структуры данных между потоками — без копирования.
да, в этом есть смысл.
но я все равно не могу придумать где это понадобится на практик.
не встречал задач в которх бы один поток создавал большую структуру данных, а другой обрабатывал бы ее. при этом после обработки выбрасывал. и данные были бы мутабельными.
Здравствуйте, cvetkov, Вы писали:
C>Здравствуйте, AlexRK, Вы писали:
C>>>теперь понял. C>>>а какя от них польза?
ARK>>Можно передавать большие структуры данных между потоками — без копирования. C>да, в этом есть смысл. C>но я все равно не могу придумать где это понадобится на практик.
Ну вообще-то это много где применяется...
Например, в Singularity есть exchange heap, что по сути то же самое.
C>не встречал задач в которх бы один поток создавал большую структуру данных, а другой обрабатывал бы ее. при этом после обработки выбрасывал. и данные были бы мутабельными.
Ключевой момент в том, что выбрасывать после обработки необязательно, можно и назад вернуть.
В общем, это подходит везде, где надо передавать между потоками туда-сюда крупные массивы данных.
Здравствуйте, AlexRK, Вы писали:
A>>let y = x; // теперь y указывают на созданный ранее объект типа Point. A>> // Указатель x деинициализирован.
ARK>А auto_ptr запретит обращение к старой невалидной переменной на этапе компиляции?
там иммутабельные указатели?
и "деинициализирован" означает "невалидный"?
Здравствуйте, Abyx, Вы писали:
A>Здравствуйте, AlexRK, Вы писали:
A>>>let y = x; // теперь y указывают на созданный ранее объект типа Point. A>>> // Указатель x деинициализирован.
ARK>>А auto_ptr запретит обращение к старой невалидной переменной на этапе компиляции?
A>там иммутабельные указатели?
Где "там"?
Указатели x и y из примера — мутабельные, но уникальные.
A>и "деинициализирован" означает "невалидный"?
Это означает, что считать его значение после присваивания в другое место вы не сможете.
Здравствуйте, AlexRK, Вы писали:
ARK>Ну вообще-то это много где применяется... ARK>Например, в Singularity есть exchange heap, что по сути то же самое.
надо почитать об этом
ARK>Ключевой момент в том, что выбрасывать после обработки необязательно, можно и назад вернуть.
хм. да загрузить — обработать — сохранить. ARK>В общем, это подходит везде, где надо передавать между потоками туда-сюда крупные массивы данных.
вот для этого я сценария придумать не могу.