List:MySQL++« Previous MessageNext Message »
From:Warren Young Date:September 19 2005 5:28pm
Subject:Re: locable.h: strange design dessision??
View as plain text  
pps wrote:
> 
> class Lock, BasicLock, and Locable are strange pieces of code in my 
> point of view. 

That's because you don't understand the motivation, which isn't 
surprising because it hasn't been documented anywhere but the Wishlist yet.

> First of all, there's no need to have virtual methods for 
> such simple class. 

Yes, there is, because there will be an override someday.

> Locable has a really doubtful piece of code - it 
> creates BasicLock using new! 

Read up on the pImpl idiom.  (Also called Handle-Body, and other 
things.)  BasicLock is the current implementation, but in v2.1, there 
will be alternate implementations for platforms that support locks.  I 
anticipate a Boost::Threads based implementation at least, and possibly 
others.  And there still must be a BasicLock implementation for those 
platforms that do not support Boost::Threads, or where the user doesn't 
want to install it.

> isn't it's strange to change threading models at runtime? 

The purpose of hiding the implementation behind a pointer is so we can 
change that implementation without breaking the library's ABI, which 
adding data to a plain Lockable base class would do.

> I think I never saw anything like this.

See Advanced C++ by James Coplien.
Thread
locable.h: strange design dessision??Unknown Sender19 Sep
  • Re: locable.h: strange design dessision??Warren Young19 Sep
    • Re: locable.h: strange design dessision??Unknown Sender19 Sep
      • Re: locable.h: strange design dessision??Warren Young19 Sep