[racket] Web server

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Fri Jul 18 02:02:47 EDT 2014

At Thu, 17 Jul 2014 14:28:29 -0400, Brian Adkins wrote:
> On Jul 17, 2014, at 2:05 PM, Brian Adkins wrote:
> > On Jul 17, 2014, at 1:26 PM, Matthew Flatt wrote:
> >> We wanted to avoid multiple processes because OSes don't provide great
> >> facilities for managing them and communicating between them.
> > 
> > Maybe I'm confused. I thought creating a new Place involved creating a new 
> process with the Racket VM, to run in parallel (potentially on a different 
> core) with the original process. Is the "new Racket instance" running in the 
> same process as the original? That's how I read the following:
> > 
> > "The place form creates a place, which is effectively a new Racket instance 
> that can run in parallel to other places, including the initial place. "
> > 
> > Maybe wording like "which is effectively" leaves too much to the imagination. 
> Do Places run in OS scheduled threads?
> 
> Ha. I'm watching the video Asumu posted, and right after posting the
> above to the list, within a couple seconds, you explain in the video
> that Places are in the same OS process :)


Section 5 of the paper also explains the implementation, but maybe you've gotten everything out of the video, already.


> It might be worth making that clear in the documentation. I expect
> many people who are interested to read about parallelism in Racket
> may also be interested in some of the implementation details as they
> pertain to efficiency.

The reference documentation is meant to commit to implementation
details as little as possible, but there's certainly room for
improvement there. For example, I think it's worth stating there's no
separate OS process in the sense that a program that uses `place` will
not have to worry about managing separate processes.


Posted on the users mailing list.