Re: Multitasking and containers



On Fri, 24 Nov 2006 09:51:24 +0100, Maciej Sobczak wrote:

Paragraph 3 in Annex A says that it's OK to call any standard subprogram
from concurrent tasks as long as the parameters do not overlap. John
Barnes ("Progamming in Ada 2005") suggests that in order to (for
example) read from the same container, the operations need to be
protected "by using the normal techniques such as protected objects".

But reading from the protected object is not mutually exclusive (many
readers are allowed) - so where's the gain? What's the difference
between concurrent reads of, say, a Vector via protected object vs.
direct access?

I think he didn't mean container being a protected object. It would be
difficult to do, because protected types alas aren't tagged. So I read it
as "by using a locking/serialization technique, such as mutex, which can be
implemented as a protected object."

[ I don't know if ARM 2005 permits mutable implementations of read
operations on the containers. I suppose it does, so the need to lock upon
read. ]

--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
.



Relevant Pages

  • Re: Multitasking and containers
    ... concurrent tasks as long as the parameters do not overlap. ... reads of, say, a Vector via protected object vs. direct access? ... The container must set some internal state to indicate that Query_Element is ... Even though Query_Element is technically a read-only operation, ...
    (comp.lang.ada)
  • Re: GNAT for MS Visual Studio
    ... Consider a container inside the protected object. ... presumably has access variables to actual contained objects (to ... If the target objects are considered to be OUTside of the protected ...
    (comp.lang.ada)
  • Re: Multitasking and containers
    ... John Barnes suggests that in order to read from the same container, the operations need to be protected "by using the normal techniques such as protected objects". ... But reading from the protected object is not mutually exclusive - so where's the gain? ... What's the difference between concurrent reads of, say, a Vector via protected object vs. direct access? ... That would be interesting, but would break apart when encapsulated within a protected object, because there multiple readers would be allowed. ...
    (comp.lang.ada)
  • Re: Multitasking and containers
    ... But reading from the protected object is not mutually exclusive (many ... between concurrent reads of, say, a Vector via protected object vs. ... I think he didn't mean container being a protected object. ... The cache shared between ...
    (comp.lang.ada)
  • Re: Multitasking and containers
    ... But I think that's true only when multiple readers are calling protected ... protected procedure when manipulating a container nested inside a protected ... Declare the container object inside a protected object, ... long as you use protected procedures, ...
    (comp.lang.ada)