Hi,

Christophe de Vienne wrote:
Hi,

I'm currently working on the threading wrappers, mainly hidding the implementation details dependant from the thread system we use.

I have a few questions :
1) In Thread::~Thread(), the join is done directly instead of using Thread::join, which make code duplication. Is there a particular reason for that ?

You're right Thread::join must be directly called. However I think I did not call it directly because of a deadlock under Windows.


2) Thread::thread is protected. Since I'm hidding it, the children classes won't be able to access it directly.
The way I hide is the following :
In thread.h :
class Thread {
// ...
protected:
struct Impl;
Impl const & getImpl();


  private:
     Impl impl;
};

In thread.cpp:
    31 struct Thread::Impl
    32 {
    33     Impl(): thread(0) {};
    34
    35     /** Thread descriptor */
    36 #ifdef LOG4CXX_HAVE_PTHREAD
    37     pthread_t thread;
    38 #elif defined(LOG4CXX_HAVE_MS_THREAD)
    39     void * thread;
    40 #endif
    41
    42 };

This mean that children classes wanting to access the underlying descriptor need to know the Impl struct.
So what I would propose is to put the Impl declaration is a separate file, threadimpl.h, which the children class implementation file can include.


Pre-question is : Does this solution looks good to you ?

More important question : Is it really necessary to have such a possibility ?

I don't think so. Thread overrides must be platform independant, so the Impl struct has not be known.
I mean the abstraction should provide everything needed, and I don't see a real case in which it's necessary. Moreover doing this will make more complicated to elimate those damn macros we're trying to get rid of.

I have the same question for threadspecificdata and CriticalSection.

Same answer !



More questions may comes later :-)

Regards,

Christophe




Regards,

--
Michaël CATANZARITI
log4cxx project manager

        log4cxx user mailing list:
        mailto:[EMAIL PROTECTED]

        log4cxx developer mailing list:
        mailto:[EMAIL PROTECTED]

Reply via email to