Woof!
On Thu, 03 May 2007 14:11:39 -0400, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> class SomeClass
> {
> OsMutex *lock;
> int someMember;
A non static member variable "lock" can only be used to protect other member
variables of this object. It cannot protect the object itself (as you noted,
if the object is destructed, so is the lock!).
A second lock is required to protect the lifetime of the object. Often that
lock would be a static member of the object. As it is static, it doesn't live
within the object, and so is not subject to destruction. Of course, that means
it serializes destruction of all objects of that class, not just this
particular one.
Essentually, either a second lock is required, or one must be assured that
there are no other threads that could possibly access the object before it is
destructed. I believe that much of sipX uses the later approach, although it
seems to be an unwritten rule, and could possibly be violated. Locking
"yourself" just before destruction seems like a good idea, but as you so
rightly pointed out, it doesn't really work!
--Woof!
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/