home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!munnari.oz.au!bunyip.cc.uq.oz.au!uqcspe!cs.uq.oz.au!king
- From: king@cs.uq.oz.au (Paul King)
- Newsgroups: comp.object
- Subject: Re: active objects (was: rethinking the Object Paradigm)
- Message-ID: <11822@uqcspe.cs.uq.oz.au>
- Date: 24 Jan 93 23:56:43 GMT
- References: <90587@bcsaic.boeing.com> <170@eiffel.eiffel.com> <1993Jan16.144040.12684@daimi.aau.dk> <172@eiffel.eiffel.com> <1993Jan20.171936.1301@dsg.cs.tcd.ie> <BUMESH.93Jan21134932@puma.cat.syr.EDU>
- Sender: news@cs.uq.oz.au
- Reply-To: king@cs.uq.oz.au
- Lines: 55
-
- In <BUMESH.93Jan21134932@puma.cat.syr.EDU> bumesh@cat.syr.EDU writes:
-
- >>>>>> On Wed, 20 Jan 1993 17:19:36 GMT, cjmchale@dsg.cs.tcd.ie (Ciaran McHale) said:
-
- >Ciaran> I had used the term "active object" to refer to languages such as POOL
- >Ciaran> (Pierre America) or Eiffel || (Denis Caromel) in which an object has a
- >Ciaran> single thread. This thread is used to both (i) schedule the order in
- >Ciaran> which messages/invocations where to be serviced, and (ii) service them
- >Ciaran> itself. Since there is just a single thread inside the object, all
- >Ciaran> operations execute in mutual exclusion. Actually, now that I think of
- >Ciaran> it, I think I used the term "single-threaded, active objects" to refer
- >Ciaran> to such languages.
-
- >I don't see how threads really make any difference. What we really
- >should be concerned about is the mapping of activity to CPUs. Given a
- >single CPU machine it does not make any sense to have an object which
- >can have multiple threads at all...
-
- What about the situation where my object needs to communicate with
- several others via a slow mechanism (perhaps RPC). If I have multiple
- threads I can kick off all the RPCs in parallel. If I only have a single
- thread I have to do this in a serial fashion.
-
- >Ciaran> Does anybody have a definitive definition of what "active" means?
- >Ciaran> Failing that, what are the different definitions which the other
- >Ciaran> participants are using?
-
- >Active should essentially mean the ability to perform computation.
-
- I think the term active object should apply to objects with the ability
- to initiate some computation of its own accord. It only makes sense to
- define activity in terms of some interface. If I have some interface
- between a client and a server then, generally, the client is the active
- partner wrt that interface. That server just sits there waiting until
- the client asks it to do something. If the server uses other service
- interfaces to satisfy the client request, then it is still not being
- active wrt the original interface.
-
- The usefulness of identifying an operation as active (or passive)
- is in defining type compatibility rules. [You need type compatibility
- over your class hierarchies if you want to use them polymorphically.]
- For the standard active-client/passive-server style of operation the
- weaker-pre/stronger-post requirement is necessary for type compatibility.
- [This is what the Eiffel type system tries to enforce and is the main
- rule for so-called `operation' refinement.]
- For passive-client/active-server operations, a stronger-pre/stronger-post
- requirement is needed. [Not considered by Eiffel, sometimes referred
- to in `process' refinement literature.]
-
- Cheers, Paul.
- --
- Paul King _-_|\
- Dept. of Computer Science, Univ. of Queensland / X
- Queensland, Australia, 4072 \.--._/
- king@cs.uq.oz.au (ACSNET) v
-