Здравствуйте, uzhas, Вы писали:
J>>Ну так тогда придется где-то хранить эти хэндлы, так что тот же гемор, вид сбоку
U>это не вид сбоку, это доп. рычаг, который позволяет в другой манере работать с теми же вещами. и может гораздо проще решить проблему fdn721
U>это все равно, что отождествить все языки программирования "они же все эквивалентны машине Тьюринга". хотя разные языки одну и ту же задачу могут решать по-разному в плане перформанса, простоты кода\сопровождения и тд.
Покажи как бы выглядел код использующий Asio с этими хэндлерами.
J>>Далее, зачем обязательно убивать сокет явно? Достаточно хранить его в любом умном указателе и передавать явно в континуацию. Тогда при закрытии сокета в континуацию придет operation_aborted — ты в результате просто не поставишь в очередь очередную континуацию (которая держала бы сокет на плаву), и сокет мирно помрет сам вместе с указателем.
U>работа с внешними ресурсами часто требует полного и явного контроля.
Часто нужен не явный контроль, а всего лишь prompt finalization, который прекрасно обеспечивается RAII.
U>если говорить о сокетах, то иногда нужно явно освободить порт. полагаться на shared_ptr я бы не стал из-за непредсказуемости кол-ва владельцев
Не надо раздавать shared_ptr кому попало.
U>(более точно из-за непредсказуемости момента уничтожения захваченного объекта)
Если в какой-то точке программы (в другом потоке?) нужно дождаться момента разрушения какого-то объекта, то необходимо делать блокирующее ожидание.
U>обычно переводят, как "продолжение".
U>у слова "функция" и "процедура" тоже много значений в русском языке, главное — привыкнуть
U>но в данном контексте все же это слово не следует употреблять, у него несколько другое значение : http://en.wikipedia.org/wiki/Continuation
Ты ссылаешься на то continuation, которое подразумевается в call-with-current-
continuation. Есть же второе значение, которое в подразумевается в
continuation-passing style.
Тем не менее эти значения очень близки. Я бы даже сказал что это не разные значения continuation, а само понятие continuation более общее, которое и покрывает эти оба конкретных случая — CPS или call/cc.
U>в данном случае мы все же работаем с async method handler, то есть с обработчиками асинхронных операций, которые в свою очередь часто являются замыканиями ( http://en.wikipedia.org/wiki/Closure_(computer_programming) ) имхо
Продолжения тоже часто являются замыканиями.
Я считаю что вполне уместно называть хэндлер асихнронной операции продолжением — это уже устоявшаяся практика.