00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef CTHREADENGINE_H
00015 #define CTHREADENGINE_H
00016
00017
00018 #include "e32base.h"
00019 #include "Threadappview.h"
00020
00021
00022
00026 class CThreadEngine : public CTimer
00027 {
00028
00029 public:
00030
00038 static CThreadEngine* NewL(CThreadAppView* aView);
00039
00044 static CThreadEngine* NewLC(CThreadAppView* aView);
00045
00050 ~CThreadEngine(void);
00051
00057 void DoCancel();
00058
00065 void RunL();
00066
00073 TInt RunError(TInt aError);
00074
00080 void StartL();
00081
00087 void CreateThreadsL();
00088
00095 static TInt ExecuteThreadOne(TAny *aPtr);
00096
00103 static TInt ExecuteThreadTwo(TAny *aPtr);
00104
00111 static TInt ExecuteThreadThree(TAny *aPtr);
00112
00119 void KillThread(TInt aThreadCount);
00120
00127 void SetSyncValue(TInt aValue);
00128
00135 TInt GetSyncValue() const;
00136
00137 public:
00138
00139 RMutex iMutex;
00140
00141 private:
00142
00148 void ConstructL(CThreadAppView* aView);
00149
00156 CThreadEngine(void);
00157
00158
00159 private:
00160
00168 void ThreadKilledText(const TDesC& aText, TInt aCount);
00169
00170 private:
00171
00172 CThreadAppView* iView;
00173
00174
00175 RThread iThreadOne;
00176 RThread iThreadTwo;
00177 RThread iThreadThree;
00178
00179
00180 TInt iNotSynchonizedCounter;
00181
00182
00183 TInt iSynchronizedCounter;
00184
00185
00186
00187 TBool iCreatedThreads;
00188 };
00189
00190 #endif // CTHREADENGINE