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,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b5ab7c96b188b59e X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-01-16 21:48:40 PST Path: archiver1.google.com!news2.google.com!newsfeed2.dallas1.level3.net!news.level3.com!news-out.visi.com!petbe.visi.com!newshosting.com!news-xfer1.atl.newshosting.com!216.196.98.140.MISMATCH!border1.nntp.ash.giganews.com!border2.nntp.sjc.giganews.com!border1.nntp.sjc.giganews.com!nntp.giganews.com!local1.nntp.sjc.giganews.com!nntp.comcast.com!news.comcast.com.POSTED!not-for-mail NNTP-Posting-Date: Fri, 16 Jan 2004 23:48:28 -0600 Date: Sat, 17 Jan 2004 00:48:28 -0500 From: "Robert I. Eachus" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax) X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: The "()" operator revisited. References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Message-ID: NNTP-Posting-Host: 24.34.214.193 X-Trace: sv3-UjBOvcRTCtdiiIcwTAZh7WTiBPiihCCn/PBfH/T6a+sSSydpJqOQ3OT15JKzPfD4qs0QjX/pWb5j9nT!LUdTHEWSow1bXsYQx2WiR3JnVre+uMxiRnlTZz8XAb0T+8YFJE29po3v7vh51w== X-Complaints-To: abuse@comcast.net X-DMCA-Complaints-To: dmca@comcast.net X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.1 Xref: archiver1.google.com comp.lang.ada:4484 Date: 2004-01-17T00:48:28-05:00 List-Id: Robert A Duff wrote: > Adjust gets control after the (old) left-hand side has been finalized. > So, for example, how could ":=" reuse the space of the LHS? > Also, what if you want the whole ":=" to be locked, rather than > just part of it? I have created types where exactly this locking is needed, and it is a royal pain. ;-) The problem is not the calls to Adjust, it is that you can't be sure that a Finalize will have a matching Adjust call. In particular you may have two Finalize calls per Adjust. You end up keeping a stack of "unmatched" Finalize calls and using some heuristic to clean up. I used an internal sequence number assigned by Initialize, and the address. The lock on an address was started by a Finalize, and cleared by an Adjust. All locks though had a timeout, or more actually, attempting to do a second Finalize of the same address resulted in a delay, not a busy wait. It worked, but it felt kludgy. I really wished we had four operations, one for the Finalize of the LHS, and another Finalize for all other cases. -- Robert I. Eachus "The war on terror is a different kind of war, waged capture by capture, cell by cell, and victory by victory. Our security is assured by our perseverance and by our sure belief in the success of liberty." -- George W. Bush