root / tbeta / Windows / addons / ofxThread / src / ofxThread.h @ 2

View | Annotate | Download (1.2 KB)

1 2 tbeta
#ifndef _OFX_THREAD_H_
2 2 tbeta
#define _OFX_THREAD_H_
3 2 tbeta
4 2 tbeta
#include "ofConstants.h"
5 2 tbeta
6 2 tbeta
#ifdef TARGET_WIN32
7 2 tbeta
        #include <process.h>
8 2 tbeta
#else
9 2 tbeta
    #include <pthread.h>
10 2 tbeta
    #include <semaphore.h>
11 2 tbeta
#endif
12 2 tbeta
13 2 tbeta
class ofxThread{
14 2 tbeta
15 2 tbeta
        public:
16 2 tbeta
                ofxThread();
17 2 tbeta
                virtual ~ofxThread();
18 2 tbeta
                bool isThreadRunning();
19 2 tbeta
                void startThread(bool _blocking = true, bool _verbose = true);
20 2 tbeta
                bool lock();
21 2 tbeta
                bool unlock();
22 2 tbeta
                void stopThread();
23 2 tbeta
24 2 tbeta
        protected:
25 2 tbeta
26 2 tbeta
                //-------------------------------------------------
27 2 tbeta
                //you need to overide this with the function you want to thread
28 2 tbeta
                virtual void threadedFunction(){
29 2 tbeta
                        if(verbose)printf("ofxThread: overide threadedFunction with your own\n");
30 2 tbeta
                }
31 2 tbeta
32 2 tbeta
                //-------------------------------------------------
33 2 tbeta
34 2 tbeta
                #ifdef TARGET_WIN32
35 2 tbeta
                        static unsigned int __stdcall thread(void * objPtr){
36 2 tbeta
                                ofxThread* me        = (ofxThread*)objPtr;
37 2 tbeta
                                me->threadedFunction();
38 2 tbeta
                                return 0;
39 2 tbeta
                        }
40 2 tbeta
41 2 tbeta
                #else
42 2 tbeta
                        static void * thread(void * objPtr){
43 2 tbeta
                                ofxThread* me        = (ofxThread*)objPtr;
44 2 tbeta
                                me->threadedFunction();
45 2 tbeta
                                return 0;
46 2 tbeta
                        }
47 2 tbeta
                #endif
48 2 tbeta
49 2 tbeta
50 2 tbeta
        #ifdef TARGET_WIN32
51 2 tbeta
                        HANDLE            myThread;
52 2 tbeta
                        CRITICAL_SECTION  critSec;          //same as a mutex
53 2 tbeta
        #else
54 2 tbeta
                        pthread_t        myThread;
55 2 tbeta
                        pthread_mutex_t  myMutex;
56 2 tbeta
        #endif
57 2 tbeta
58 2 tbeta
        bool threadRunning;
59 2 tbeta
        bool locked;
60 2 tbeta
        bool blocking;
61 2 tbeta
        bool verbose;
62 2 tbeta
};
63 2 tbeta
64 2 tbeta
#endif