This directory contains a program for benchmarking various synchronization and concurrent programming mechanisms in ACE. To build the program, do a make on the top level Makefile (or, on NT, open Synch_Tests.dsw and build evey project in it.) There are several modules which perform different benchmarking measurements in subdirectories. Here is a short description of all the subdirectories: Synch_lib: This directory contains interface definitions required by both main program (synch_driver) and other modules. Base_Test: This directory contains a set of baseline tests. They measure the time to obtain a lock without contension, or trying to objtain a lock with contension. Perf_Test: This directory contains a set of performance tests. They measure the opeation performed by spawning a bunch of threads and let these threads compete with each other in obtaining a lock. There'll always be a "Method" object in each module subdirectory. They defines the method used in benchmarking and usually takes some options which can be defined in the 'svc.conf' file. Beside from this "Method" object, there are also a lot of "Test" objects that define the mechanism to be tested. Executing the program: the synch_driver performs various benchmarking according to the "script" defined in 'svc.conf' file. All command line options applicable to ACE's Service_Config class can be used. The entries in svc.conf file are always in groups. Each group consists of several svc.conf entries. The first entry in each group is the "Method" entry which defines the methodology used in the test. The rest of the entries are "Test" entries which define the mechanism to be test using the "Method". At this moment, you can not have entries with the same object (either "Method" object or "Test" object) in one svc.conf file. Therefore, at this moment, there can only be two groups in the svc.conf. Of them, each "Test" can only be performed once. Therefore, there's no way to benchmark using the same method with differnt configurations within the same svc.conf file. However, this can be easily overcome by defining multiple svc.conf files and invoking the synch_driver with different svc.conf file. There'll be more detailed description about how a "Method" object can be configured in respective subdirectory.