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.3 required=5.0 tests=BAYES_00,FREEMAIL_FROM, INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,20fe5a249f5f6562 X-Google-Attributes: gid103376,public X-Google-Thread: ffc1e,9425605c29366d79 X-Google-Attributes: gidffc1e,public From: "Vladimir Olensky" Subject: Re: multi reads, single write Date: 1999/12/14 Message-ID: #1/1 X-Deja-AN: 560686399 References: <3847B024.EC4FD04F@essex.ac.uk> <833uh9$e4p$1@pravda.ucr.edu> Organization: Posted via Supernews, http://www.supernews.com X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Newsgroups: comp.programming.threads,comp.lang.ada X-Complaints-To: newsabuse@supernews.com Date: 1999-12-14T00:00:00+00:00 List-Id: Tom Payne wrote in message <833uh9$e4p$1@pravda.ucr.edu>... >Vladimir Olensky wrote: >[...] >> First of all Kostas Kostiadis (original poster) was asking: "Hello >> all, I just want to ask your opinion(s) as to what is the most >> efficient way to implement a "multiple-reads, single write" >> scenario." >[...] >> My answer was exactly how to do that in a very simple and efficient >> way - using protected types in Ada that are specially designed for >> "multi-read single write" scenario in multithreaded/multitasking >> environment. > >Your answer does not, however, respond to the question of "what is the >most efficient way to implement" a CREW protocol. It merely states >that all Ada implementations have a built-in implementation, which is >interesting but not particularly helpful. Ada 95 implementations guarantee that this is done in the most efficient way for a given platform. Remember that Ada 95 was designed for "hard" real-time systems including embedded ones. Regards, Vladimir Olensky ============================================= Some quotes from Ada ARM (9.1): >From the implementation perspective, a protected object is designed to be a very efficient conditional critical region (see 9.1.3). The protected operations are automatically synchronized to allow only one writer or multiple readers. The protected operations are defined using a syntax similar to a normal subprogram body, with the mutual exclusion of the critical region happening automatically on entry, and being released automatically on exit. 9.1.3 Efficiency of Protected Types Protected types provide an extremely efficient mechanism; the ability to use the thread of control of one task to execute a protected operation on behalf of another task reduces the overhead of context switching compared with other paradigms. Protected types are thus not only much more efficient than the use of an agent task and associated rendezvous, they are also more efficient than traditional monitors or semaphores in many circumstances. <...> Ada 95 protected objects are an amalgam of the best features of conditional critical regions and monitors: they collect all the data and operations together, like monitors, and yet they have barriers, like conditional critical regions. The barriers describe the required state that must exist before an operation can be performed in a clear manner which aids program proof and understanding. Protected objects are very similar to the shared objects of the Orca language developed by Bal, Kaashoek and Tanenbaum [Bal 92].