1 |
[en] REVISITING COROUTINES / [pt] REVISITANDO CO-ROTINASANA LUCIA DE MOURA 27 October 2004 (has links)
[pt] O objetivo deste trabalho é defender o resgate do conceito
de co-rotinas como uma construção de controle poderosa e
conveniente, que pode substituir tanto continuações de
primeira classe como threads com um conceito único e mais
simples. Para suprir a ausência de uma definição precisa e
adequada para o conceito de co-rotinas, propomos um novo
sistema de classificação, e introduzimos o conceito de co-
rotinas completas, para o qual provemos uma definição
formal, baseada em uma semântica operacional. Demonstramos
a seguir a equivalência de poder expressivo entre co-rotinas
completas simétricas e assimétricas e entre co-rotinas
completas e continuações one-shot tradicionais e parciais,
discutindo as vantagens de corotinas completas assimétricas
em relação a co-rotinas simétricas e continuações de
primeira classe. Finalmente, analizamos os benefícios e
desvantagens associados aos diversos modelos de
concorrência, justificando a adoção de modelos alternativos
a multithreading e o oferecimento de co-rotinas como
uma construção básica de concorrência, adequada à
implementação desses modelos. / [en] The purpose of this work is to defend the revival of
coroutines as a powerful and convenient control construct,
which can replace both firstclass continuations and threads
with a single and simpler concept. In order to provide an
adequate and precise definition of the concept of
coroutines, we propose a new classifying system, and
introduce the concept of complete coroutines, for which we
provide a formal definition based on an operational
semantics. We then demostrate that complete symmetric
coroutines and complete asymmetric coroutines have
equivalent expressive power, as well as complete coroutines
and one-shot traditional and partial continuations. We
also discuss the advantages of using complete asymmetric
coroutines instead of symmetric coroutines or first-class
continuations. Finally, we analyse the benefits and
problems associated with different concurrency models,
and argue in favor of the replacement of multithreading
with alternative concurrency models and the provision of
coroutines as a basic concurrency construct, adequate for
the implementation of these alternative models.
|
Page generated in 0.0256 seconds