В данной статье определяется проблемная область, задачи которой успешно решаются при помощи продолжений, анализируются традиционные методы решения таких задач и рассматриваются несколько практических примеров с эффективным использованием продолжений.
This article defines a subject area whose problems can be conveniently solved with the use of
(
Read more... )
Comments 21
умеет отдавать управление другой нити только нескольких, единичных случаях
Пропущено "в" перед "нескольких".
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Что касается производительности, то (в большинстве случаев) восстановление продолжения равно или дешевле вызова обычной функции. Захват -- зависит от реализации, если это CPS, то эквивалентно созданию замыкания.
Reply
а чо происходит с продолжениями, когда они передаются из потока в поток? у меня какой-то зуд, что что-то должно работать не так, как в однопоточной задаче... т.е. если в однопоточной программе "передачу" продолжений компилятору можно решить, скомпоновав код по-другому, то передача продолжений между потоками становится задачей, которая у меня в голове не помещается.
Reply
Reply
Reply
Ну уж очень большой разницы нет, в том смысле, что многие компиляторы Scheme работают, сначала выполняя CPS-преобразование, после чего call/cc реализуется тривиально.
Те, что работают не так - да, там специальные усилия, и захватывается весь call stack. См.напр. spaghetti stack, наверное... См.тж. библиографию на http://library.readscheme.org/page6.html - лучшего места не найти.
Но как бы там ни было, мне все равно кажется, что вопросы захвата продолжений совершенно ортогональны многопоточности - разве нет?
Reply
Leave a comment