Multy-core CPUs

Jason Johnson jason.johnson.081 at gmail.com
Thu Oct 25 17:58:02 UTC 2007


Well ok, that's a pretty good break down of the problems of such a
thing.  Though it wasn't my idea and I'm not invested in it.

Of course the one thing I have to disagree with in your message is the
comment about an object responding to multiple messages.  I wouldn't
want that.  If you want an object to respond to more messages
concurrently make more of them.

On 10/25/07, Peter William Lount <peter at smalltalk.org> wrote:
>
>  Jason Johnson wrote:
>  On 10/24/07, Sebastian Sastre <ssastre at seaswork.com> wrote:
>
>
>  So I'm stating here that in a smalltalk image of the future *every object
> should have a process*. Every instance. All of them.
>
>  That is an interesting idea. That would open a door to a new way of
> Garbage collection, because it can then be tied to the exit of a
> process.
>
>
>
>  Said that I return to the problem you stated about the need of copy copy
> copy, saying that this premise changes things and you don't need to copy
> anymore because a VM like that, no matter who or when, an instVar of an
> object is to be modified it will provide you of guarantee that the write
> will be made by the process that corresponds to that instance.
>
>  Yes, in such a system, you don't need to copy because all that gets
> passed around are references to processes.
>
>
>
>  hi,
>
>  What? That just won't work. Think of the memory overhead.
>
>  Tying an object instance to a particular process makes no sense. If you did
> that you'd likely end up with just as many dead locks and other concurrency
> problems since you'd now have message sends to the object being queued up on
> the processes input queue. Since processes could only process on message at
> a time deadlocks can occur - plus all kinds of nasty problems resulting from
> the order of messages in the queue. (There is a similar nasty problem with
> the GUI event processing in VisualAge Smalltalk that leads to very difficult
> to diagnose and comprehend concurrency problems). It's a rats maze that's
> best to avoid.
>
>  Besides, in some cases an object with multiple threads could respond to
> many messages - literally - at the same time given multiple cores. Why slow
> down the system by putting all the messages into a single queue when you
> don't have to!?
>
>  Tying an object's life time to the lifetime of a process doesn't make sense
> since there could be references to the object all over the place. If the
> process quits the object should still be alive IF there are still references
> to it.
>
>  You'd need to pass around more than references to processes. For if a
> process has more than one object you'd not get the resolution you'd need.
> No, passing object references around is way better.
>
>  Even if you considered an object as having it's own "logical" process you'd
> get into the queuing problems hinted at above.
>
>  Besides objects in Smalltalk are really fine grained. The notion that each
> object would have it's own thread would require so much thread switching
> that no current processor could handle that. It would also be a huge waste
> of resources.
>
>  Again, one solution does not fit all problems - if it did programming would
> be easier.
>
>  All the best,
>
>  Peter
>
>
>
>
>



More information about the Squeak-dev mailing list