Алексей Вознюк - Продолжения в практике (обсуждение)

Apr 13, 2011 16:38

В данной статье определяется проблемная область, задачи которой успешно решаются при помощи продолжений, анализируются традиционные методы решения таких задач и рассматриваются несколько практических примеров с эффективным использованием продолжений.

This article defines a subject area whose problems can be conveniently solved with the use of ( Read more... )

#7

Leave a comment

Comments 21

yushi April 13 2011, 18:05:52 UTC
Стр. 100:
умеет отдавать управление другой нити только нескольких, единичных случаях

Пропущено "в" перед "нескольких".

Reply

antilamer April 13 2011, 18:25:14 UTC
Спасибо, исправил - через некоторое время перегенерируем pdf.

Reply


ext_218033 April 13 2011, 20:03:37 UTC
Отличная статья! Чувствуется наличие педагогического таланта у автора.

Reply

ftm666 April 14 2011, 22:07:07 UTC
наличие этого таланта мы проверим на примере грозящего мне обучения регулярным выражениям. надеюсь, не матерным:)

Reply

rigidus June 4 2014, 13:59:38 UTC
Реквестирую программу обучения целиком, т.к. постоянно сталкиваюсь с задачами подобного обучения

Reply

kmmbvnr May 4 2011, 05:27:37 UTC
Присоединяюсь к похвалам. Удивительно толково изложено.

Reply


Кто нибуть знает сколько ресурсов потребляют продолже ext_508490 April 15 2011, 11:37:18 UTC
Кто нибуть знает сколько ресурсов потребляют продолжения применительно к Schema/Smalltalk/C? можно ли пользовать продолжения если я хочу обрабатывать скажем 1000 транзакций в секунду? если весь ресурс будет потрачен на переключения между продолжениями и инвалидацию кеша?

Reply

Re: Кто нибуть знает сколько ресурсов потребляют продол swizard April 15 2011, 11:52:48 UTC
По памяти навскидку сказать невозможно, как и с замыканием. Зависит и от реализации самого механизма, и от того, какие данные захвачены продолжением и на что держаться активные ссылки.

Что касается производительности, то (в большинстве случаев) восстановление продолжения равно или дешевле вызова обычной функции. Захват -- зависит от реализации, если это CPS, то эквивалентно созданию замыкания.

Reply


sassa_nf April 17 2011, 15:54:11 UTC
awesome!

а чо происходит с продолжениями, когда они передаются из потока в поток? у меня какой-то зуд, что что-то должно работать не так, как в однопоточной задаче... т.е. если в однопоточной программе "передачу" продолжений компилятору можно решить, скомпоновав код по-другому, то передача продолжений между потоками становится задачей, которая у меня в голове не помещается.

Reply

antilamer April 18 2011, 06:19:11 UTC
Ну а почему с ними должно происходить не то же самое, что и с любыми другими замыканиями? :) Продолжение ведь - это "остаток" кода в одном потоке, а не во всей программе.

Reply

sassa_nf April 18 2011, 09:38:32 UTC
ну, потому что я чайник и потому что замыкание занимает меньше усилий для понимания ( ... )

Reply

antilamer April 18 2011, 09:41:41 UTC
> есть большая разница между continuation passing стилем
Ну уж очень большой разницы нет, в том смысле, что многие компиляторы Scheme работают, сначала выполняя CPS-преобразование, после чего call/cc реализуется тривиально.

Те, что работают не так - да, там специальные усилия, и захватывается весь call stack. См.напр. spaghetti stack, наверное... См.тж. библиографию на http://library.readscheme.org/page6.html - лучшего места не найти.

Но как бы там ни было, мне все равно кажется, что вопросы захвата продолжений совершенно ортогональны многопоточности - разве нет?

Reply


Leave a comment

Up