Multy-core CPUs

Ralph Johnson johnson at cs.uiuc.edu
Thu Oct 18 11:09:10 UTC 2007


On 10/17/07, Steve Wart <steve.wart at gmail.com> wrote:
> I don't know if mapping Smalltalk processes to native threads is the way to
> go, given the pain I've seen in the Java and C# space.

Shared-memory parallelism has always been difficult.  People claimed
it was the language, the environment, or they needed better training.
They always thought that with one more thing, they could "fix"
shared-memory parallelism and make it usable.  But Java has done a
good job with providiing reasonable language primitives.  There has
been a lot of work on making threads efficient, and plenty of people
have learned to write mutli-threaded Java.  But it is still way too
hard.

I think that shared-memory parallism, with explicit synchronization,
is a bad idea.  Transactional memory might be a solution, but it
eliminates explicit synchronization.  I think the most likely solution
is to avoid shared memory altogether, and go with message passing.
Erlang is a perfect example of this.  We could take this approach in
Smalltalk by making minimal images like Spoon, making images that are
designed to be used by other images (angain, like Spoon), and then
implementing our systms as hundreds or thousands of separate images.
Image startup would have to be very fast.  I think that this is more
likely to be useful than rewriting garbage collectors to support
parallelism.

-Ralph Johnson



More information about the Squeak-dev mailing list