version 1.130, 2002/05/11 01:35:42
|
version 1.132, 2002/05/14 03:27:23
|
|
|
is changed to (__int64), the tv_usec variable of timeval struct has | is changed to (__int64), the tv_usec variable of timeval struct has |
the correct value. | the correct value. |
| |
|
38. (Roger Kumpf - HP) 13 May 2002 - To eliminate the possibility of |
|
collisions (and subsequent corruption) when different threads |
|
concurrently update the ArrayRep reference count, I added a Mutex |
|
to the ArrayRep structure. This Mutex gets locked in the inc() |
|
and dec() methods that manage the reference count. |
|
|
|
After adding the Mutex, the "mysterious" memory problems seemed to clear |
|
up. This seems like a very good thing. However, note that the addition |
|
of the Mutex adversely affects performance (nearly 2:1). I tried using |
|
an AtomicInt for the reference count, but that seemed to yield even worse |
|
performance on my system. |
|
|
|
Anyone should feel free to optimize the performance of the locking in |
|
the ArrayRep structure. Since I believe this locking is required for |
|
proper operation, I've added the Mutex for all platforms. Note that I |
|
had to comment out the assert statements in internal_dq.h to avoid a |
|
circular header file dependency (Array.h->IPC.h->internal_dq.h-> |
|
Exception.h->String.h->Array.h). |
|
|
|
39. (Roger Kumpf - HP) 13 May 2002 - Removed operator int() methods from |
|
all CIM* classes. These methods had been causing a number of difficult |
|
to find defects, including the use of the wrong versions of the methods |
|
in Memory.h by the Array template (leading to major memory leaks). |
|
|
|
In general, it is dangerous to define a casting operator method that |
|
loses so much information, because the compiler will apply the cast |
|
at will in an effort to match types. I've replaced all instances of |
|
the int cast operator with isNull() methods. |
|
|
======================================================================== | ======================================================================== |
| |
Version 1.08 working towards 1.1 - Started 27 March 2002 | Version 1.08 working towards 1.1 - Started 27 March 2002 |