Hi Edward:

Message: 2
Date: Mon, 03 Aug 2009 18:00:07 -0400
From: "Edward Z. Yang" <ezy...@mit.edu>
Subject: Re: [Twisted-Python] Deferred documentation rewrite
To: Twisted general discussion <twisted-python@twistedmatrix.com>
Message-ID: <1249336297-sup-7...@javelin>
Content-Type: text/plain; charset=UTF-8

>Why callbacks?
>  - Asynchronous interaction to synchronous interaction
>  - Delocalized execution (the parser example)
>  - High level functions in Python review

I don't know if this is an aid but here goes: When I was preparing my
Pycon 2008 talk, amongst the many papers I read, was the Doug 
Schmitt's concurrency design pattern papers including the original 
Reactor Pattern paper. I also read the Microsoft "Cooperative Task Management 
without Manual Stack Management Event-driven Programming is Not the Opposite of 
Threaded Programming" paper. In the light of those papers, 
this is the way I see things:

1) Reactors provide a portable form of non-preemptive multitasking. By
implication, reactors are schedulers. 

2) If you buy Reactor as scheduler, then Deferreds can be viewed as 
representing a thread (or chain) of execution, each callback analogous to a 
continuation - the next address to resume execution when a result is ready.

3) One of the main differences between asychronous and synchronous processing 
becomes who is responsible for setting up shared state between
the links in the execution chain.

>Quite frankly, I'm stumped on "defining synchronous and asynchronous."

Simple definition: In a synchronous call, the caller blocks until a result is 
ready. Upon return the next statement is executed (barring something like an 
exception). In an asynchronous call, the caller does not wait for a result and 
continues.

> I just don't know what direction people are coming from.

I would suggest most people are trying to solve simple problems and want the 
least surprise. Unfortunately asynchronous programming has lots of
surprises. In case of terminology, try looking up how terms 
like 'asynchronous' or 'synchronous' as used in a few of the more 
popular network programming books.

Cheers,
Andrew






      

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to