// LOCKOBJ.H: Interface for the clockobj class.////
#if! defined (LOCKOBJ_H) #define lockobj_h
#if _msc_ver> 1000 # prgma overce # endif //_msc_ver> 1000 # include "stdtype.h"
Class clockobj {public: Virtual void Lock () = 0; Virtual Void UNLOCK () = 0;
Class clockobjcs: public clockobj {protected: critical_section m_cs; public: clockobjcs () {INITIALIZECRITILSECTION (& M_CS);
ClockobJCS (Const Clockobjcs &) {InitializeCriticalSection (& M_CS);
ClockobJCS (const clockobjcs *) {INITIALIZECRITICALSECTION (& m_cs);
Virtual ~ clockobjcs () {deletecriticalsection (& m_cs);}; Virtual Void Lock () {EntercriticalSection (& M_CS);
Virtual void UNLOCK () {LeaveCriticalSection;};
Class clock {protected: clockobj * m_plockobj; public: clock (clockobj * plockobj): m_plockobj (PLOCKOBJ) {m_plockobj-> lock ();
Virtual ~ clock () {m_plockobj-> UNLOCK ();}};
#ENDIF How does ClockobJCS g_mycs; int g_icount = 0; threadadd () {Clock Lock (& g_mycs); g_icount;} THEADDEC () {Clock Lock (& g_mycs); --g_icount;