home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / object / 5037 < prev    next >
Encoding:
Internet Message Format  |  1993-01-24  |  3.3 KB

  1. Path: sparky!uunet!munnari.oz.au!bunyip.cc.uq.oz.au!uqcspe!cs.uq.oz.au!king
  2. From: king@cs.uq.oz.au (Paul King)
  3. Newsgroups: comp.object
  4. Subject: Re: active objects (was: rethinking the Object Paradigm)
  5. Message-ID: <11822@uqcspe.cs.uq.oz.au>
  6. Date: 24 Jan 93 23:56:43 GMT
  7. 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>
  8. Sender: news@cs.uq.oz.au
  9. Reply-To: king@cs.uq.oz.au
  10. Lines: 55
  11.  
  12. In <BUMESH.93Jan21134932@puma.cat.syr.EDU> bumesh@cat.syr.EDU writes:
  13.  
  14. >>>>>> On Wed, 20 Jan 1993 17:19:36 GMT, cjmchale@dsg.cs.tcd.ie (Ciaran McHale) said:
  15.  
  16. >Ciaran> I had used the term "active object" to refer to languages such as POOL
  17. >Ciaran> (Pierre America) or Eiffel || (Denis Caromel) in which an object has a
  18. >Ciaran> single thread. This thread is used to both (i) schedule the order in
  19. >Ciaran> which messages/invocations where to be serviced, and (ii) service them
  20. >Ciaran> itself. Since there is just a single thread inside the object, all
  21. >Ciaran> operations execute in mutual exclusion. Actually, now that I think of
  22. >Ciaran> it, I think I used the term "single-threaded, active objects" to refer
  23. >Ciaran> to such languages.
  24.  
  25. >I don't see how threads really make any difference. What we really
  26. >should be concerned about is the mapping of activity to CPUs. Given a 
  27. >single CPU machine it does not make any sense to have an object which
  28. >can have multiple threads at all...
  29.  
  30. What about the situation where my object needs to communicate with
  31. several others via a slow mechanism (perhaps RPC).  If I have multiple
  32. threads I can kick off all the RPCs in parallel.  If I only have a single
  33. thread I have to do this in a serial fashion.
  34.  
  35. >Ciaran> Does anybody have a definitive definition of what "active" means?
  36. >Ciaran> Failing that, what are the different definitions which the other
  37. >Ciaran> participants are using?
  38.  
  39. >Active should essentially mean the ability to perform computation.
  40.  
  41. I think the term active object should apply to objects with the ability
  42. to initiate some computation of its own accord.  It only makes sense to
  43. define activity in terms of some interface.  If I have some interface
  44. between a client and a server then, generally, the client is the active
  45. partner wrt that interface.  That server just sits there waiting until
  46. the client asks it to do something.  If the server uses other service
  47. interfaces to satisfy the client request, then it is still not being
  48. active wrt the original interface.
  49.  
  50. The usefulness of identifying an operation as active (or passive)
  51. is in defining type compatibility rules.  [You need type compatibility
  52. over your class hierarchies if you want to use them polymorphically.]
  53. For the standard active-client/passive-server style of operation the
  54. weaker-pre/stronger-post requirement is necessary for type compatibility.
  55. [This is what the Eiffel type system tries to enforce and is the main
  56. rule for so-called `operation' refinement.]
  57. For passive-client/active-server operations, a stronger-pre/stronger-post
  58. requirement is needed. [Not considered by Eiffel, sometimes referred
  59. to in `process' refinement literature.]
  60.  
  61. Cheers, Paul.
  62. --
  63. Paul King                                   _-_|\
  64. Dept. of Computer Science, Univ. of Queensland                  /     X
  65. Queensland, Australia, 4072                          \.--._/
  66. king@cs.uq.oz.au (ACSNET)                               v
  67.