[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CriticalSection in VisaulC++ in C

#define VisaulC VisualC

Thanks for the replies. What confused me originally was really 
why C was so prevalent in C++ Win32, and how I should think in
those cases.
C/C++ Users Journal May 2000 has some articles on multithreading.
www.cuj.com/code May2000 howard.zip, calkins.zip.

Calkins states:

  Here Run is implemented by class Thread, though it could also be
made virtual and implemented by subclasses of Thread if only one 
thread in the object is desired.
  If the object requires multiple threads, it may be more convenient
to directly implement multiple Run-style member functions as needed,
rather than use Thread as an abstract base class.
  It is important to note that the thread function must be a C-style 
function, not a member function.
Charles Calkins, "Integrating Threads with Template Classes", 
C/C++ Users Journal, May 2000 page 32.

Q1. Does this tell me that _multi_threading and inheritance the 
    OO way are "incompatible"? In many cases I'd want different 
    Run-methods, but why would I want that in the same object, 
    if the Run-methods were different? Maybe to implement different
    flavours of a filter process? But why couldn' these flavours 
    have one Thread class each, the Run methods would differ anyhow?
    And they would differ more than inhertiance and polymorhism offer. 
    What exactly does OO offer in this case?
Q2. Why does it have to be a "C-style function". Is Win32 a non-OO

Another article, Using predicate waits with Win32 threads - Howard, C/C++
Users Journal, May 2000 even mentions Hoare etc. and goes on to design
some interesting code. He states that:

Java        Windows
wait      = SignalObjectAndWait (Win-98 and Win-2000)
notify    = PulseEvent with autoreset
notifyAll = PulseEvent with manual reset

Is this correct?

)       Oyvind Teig )          oyvind.teig@xxxxxxxxxxxx ) Tel: +47 )
( Navia Maritime AS (          oyvind.teig@xxxxxxxxxxxx ( 73581268 (
)    div. Autronica )                                   ) Fax: +47 )
(    7005 Trondheim (           http://www.autronica.no ( 73581001 (
)            Norway )                                   )          )
)                    http://www.autronica.no/pub/tech/rd/index.htm )