Public Beta: TMultiReadExclusiveWriteSynchronizer update for Delphi 6

By: John Kaster

Abstract: This beta consists of an updated implementation for the TMultiReadExclusiveWriteSynchronizer in SysUtils.pas to fix a possible deadlock issue. It also contains some speed improvements.

Description of Public Beta

This updated SysUtils.pas file fixes a deadlock issue that can occur in the TMultiReadExclusiveWriteSynchronizer. The problem
tends to show up when a lot of threads are using the same TMREWS object at the same time.
Typical symptoms of the problem occur in ISAPI dll web applications. They may stop sending responses back to the client web
browser. On the server, the CPU usage may be pegged at 100%.

Bugs Fixed/New Features

This public beta addresses the deadlock issue in the TMultiReadExclusiveWriteSynchronizer.

Downloading the beta

Because this is a public beta, you must agree to a disclaimer before downloading the file containing the update. When you attempt to download the file, you will be asked if you agree to the disclaimer. The file is then streamed directly from the web server. This streaming process normally prevents auto-resuming the file with a download manager. The file is currently 91.3K. We apologize for any inconvenience this may cause if your download gets interrupted.

You can download this file from CodeCentral. The direct link to download the file is http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=17761. The zip file download is 91.3K.

This file may be updated from time to time, and you can look at the detail listing for the file to find out when it was last updated, or any other specific notes regarding changes to this beta.

Installation

Because this is a beta version, you should back up the current, shipping version of the files you will be replacing with the files contained in this beta so you can restore them without having to re-install the entire product.

Special installation instructions

Copy SysUtils.pas to your current project's directory and rebuild the project. SysUtils.dcu will be created in your current projects
directory. You will now have the fix in your application. If you want all applications to have the patch, you can copy the SysUtils.dcu
to your lib directory.

Testing

Borland is planning to release a certified version of this beta software in the future. We are providing it as a public beta to have as broad a base as possible for testing it before we certify it. This is specifically why we have made this file available for our customers to download.

Special testing instructions

Once you have compiled the fix into your application, you should not run into deadlock. This is especially so in web applications. If you run into errors, please try to produce a test
case and put it in QualityCentral.

Warnings

We have performed tests to verify that the software you may be downloading and testing works as intended. However, you may still encounter problems with using this version of the software. It has not yet been certified. Please read the disclaimer you see when downloading the file very carefully, as it provides details on Borland's legal position with respect to this public beta.

Specific warnings:

SysUtils.pas is provided as-is.

Feedback

Please use QualityCentral to provide feedback on this beta in the Public Beta - Delphi/RTL/TMultiReadWrite project area. If you are unable to use the currently available QualityCentral clients, use the borland.public.delphi.rtl newsgroup. If you cannot access our newsgroups with a conventional newsgroup reader, you can use a browser to access this newsgroup at http://newsgroups.borland.com.

If you encounter problems with this beta product, please provide as much detail as possible in a QualityCentral report, or in a newsgroup message if you can't use QualityCentral yet, including the platform you are running on and steps to reproduce the problem.

If you are uncertain how to configure newsgroup access, please refer to Borland's newsgroup reference pages.


Server Response from: ETNASC04