Coroutine против событийного программирования - PullRequest
7 голосов
/ 13 февраля 2011

Что касается примера в википедии: http://en.wikipedia.org/wiki/Coroutine

var q := new queue

coroutine produce
    loop
        while q is not full
            create some new items
            add the items to q
        yield to consume

coroutine consume
    loop
        while q is not empty
            remove some items from q
            use the items
        yield

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

1 Ответ

5 голосов
/ 13 февраля 2011

Я думаю, что сопрограммы являются «традиционными», а события - «современными».Тем не менее, они также имеют другое назначение;AFAIK, сопрограммы могут либо указывать, куда передавать управление (например, вызовы методов), либо использоваться для time-share , в то время как события являются слабо связанной связью (т.е. сообщаются «вверх» в многоуровневой архитектуре ).

Обязательно прочитайте серию блогов Эрика Липперта (с октября 2010 г.) о стиле продолжения прохождения, если вас интересуют подобные вещи.Есть один пост под названием " Размышления о сопрограммах ".

...