Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

January 2006
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Dec  Feb

Concurrent/Parallel Programming - The Next Generation - Part 2

Wednesday, January 11, 2006

A few days ago, I posted about the need to look at alternative concurrency approaches in order to take advantage of the opportunities offered by the move towards multiple processors and parallel machines. In that post, I highlighted the 3 different main concurrent programming paradigms (Shared-state Concurrency, Message-passing Concurrency, and Declarative/Dataflow Concurrency). I indicated that "Shared-state Concurrency" is the most widespread but that it doesn't scale (complexity-wise) very well. In the remainder of the post, I focused on the "Declarative/Dataflow Concurrency" paradigm and provided some examples. In this post, I'll talk a little bit about the Lisp alternatives for "Message-passing Concurrency" (which is the model that Erlang has used so successfully).

First of all, for those who are not familiar with Erlang, it is worthwhile to highlight the characteristics of Erlang that have contributed to its success (from the Erlang white paper):

Not all of these Erlang characteristics relate directly to "Message-passing Concurrency"; however, it is interesting to consider how (in combination) they have contributed towards making Erlang successful in this space.

In the Lisp world, there are a number of different products/libraries that have been developed that attempt to address "Message-passing Concurrency". Here are a few of them: Update-2006-01-12: Marc Feeley sent me the following update on Termite (reproduced with permission):
"Since the Termite paper was presented at the European Scheme and Lisp workshop a few things have happened:
  1. The mailbox mechanism has been integrated into Gambit's thread model, which improves the performance of messaging in Termite, and allows "message-passing" programming (between local threads) in the standard Gambit system. Serialization and deserialization has also been improved.
  2. A "Distributed Computing" example was added to the examples in the distribution. It shows how to implement a distributed computing library in about 700 lines of Scheme code (including process migration, location transparency, and serialization of I/O ports).
  3. Guillaume Germain will soon be done with his thesis, and has written several interesting Termite examples. Stay tuned.
The most difficult aspect of this distributed programming language research is that there are so many abstraction levels to choose from. Should Termite be a minimal language on which others can build their own distributed computing system, or should it provide a large set of predefined features (such as process migration, location transparency, etc)? In the spirit of Scheme, Termite aims to be a small maleable distributed programming language. We're hoping that it will be the basis for other more specific distributed programming languages developed here or elsewhere."

emacs Copyright © 2006 by Bill Clementson