From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,16594902ce57591b X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news3.google.com!news4.google.com!news.glorb.com!newsfeed-0.progon.net!progon.net!news-zh.switch.ch!switch.ch!cernne03.cern.ch!not-for-mail From: Maciej Sobczak Newsgroups: comp.lang.ada Subject: Re: Multitasking and containers Date: Fri, 24 Nov 2006 11:35:11 +0100 Organization: CERN News Message-ID: References: NNTP-Posting-Host: abpc10883.cern.ch Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: cernne03.cern.ch 1164364511 29752 137.138.37.241 (24 Nov 2006 10:35:11 GMT) X-Complaints-To: news@@cern.ch NNTP-Posting-Date: Fri, 24 Nov 2006 10:35:11 +0000 (UTC) User-Agent: Thunderbird 1.5.0.8 (X11/20061113) In-Reply-To: Xref: g2news2.google.com comp.lang.ada:7681 Date: 2006-11-24T11:35:11+01:00 List-Id: Dmitry A. Kazakov 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. No, but you might want to encapsulate a container within a protected object and have some protected procedures and functions forwarding to relevant ones in the container. > [ 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. ] That would be interesting, but would break apart when encapsulated within a protected object, because there multiple readers would be allowed. Having a mutex for readers sounds like a concurrency killer and relying on protected wrappers seems to be fragile because of this possible mutability. So - what is The Solution (tm) for multiple tasks reading from the same container? Let's say you want to have N worker tasks consulting a shared dictionary (map) that was initialized before the tasks started their work. How would you solve this? -- Maciej Sobczak : http://www.msobczak.com/ Programming : http://www.msobczak.com/prog/