Changeset 11 for nrEngine/src


Ignore:
Timestamp:
12/16/06 18:26:42 (14 years ago)
Author:
art
Message:
 
Location:
nrEngine/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • nrEngine/src/IThread.cpp

    r1 r11  
    2525        IThread::IThread()// : EventActor(std::string("Thread_") + boost::lexical_cast<std::string>(id)) 
    2626        { 
    27                 mThread = NULL; 
     27                //mThread = NULL; 
    2828                mThreadState = THREAD_STOP; 
    2929        } 
     
    3333        { 
    3434                // delete the thread object if it is not empty 
    35                 if (mThread){ 
    36                         delete mThread; 
    37                 } 
     35                //if (mThread){ 
     36                        //delete mThread; 
     37                //} 
    3838        } 
    3939 
     
    4949                NR_Log(Log::LOG_KERNEL, "IThread: Create thread and start it"); 
    5050 
     51                // create the joinable attribute for thsi thread 
     52                pthread_attr_init(&mThreadJoinableAttr); 
     53                pthread_attr_setdetachstate(&mThreadJoinableAttr, PTHREAD_CREATE_JOINABLE); 
     54 
    5155                // now create a thread and let it run 
     56                //mThread = new boost::thread(boost::bind(IThread::run, this));          
    5257                mThreadState = THREAD_RUNNING; 
    53                 mThread = new boost::thread(boost::bind(IThread::run, this)); 
     58                int res = pthread_create(&mThread, &mThreadJoinableAttr, IThread::run, (void *)this); 
     59                if (res){ 
     60                        NR_Log(Log::LOG_KERNEL, Log::LL_ERROR, "IThread: creation of a thread failed with error code %d", res); 
     61                        return; 
     62                } 
     63    
    5464        } 
    5565 
     
    5767        void IThread::threadStop() 
    5868        { 
     69                // change state 
    5970                changeState(THREAD_STOP); 
    60                 mThread->join(); 
     71 
     72                // join the thread to the main process 
     73                //mThread->join(); 
     74                pthread_attr_destroy(&mThreadJoinableAttr); 
     75                int res = pthread_join(mThread, NULL); 
     76                if (res){ 
     77                        NR_Log(Log::LOG_KERNEL, Log::LL_ERROR, "IThread: can not join running thread (error code %d)", res); 
     78                        return; 
     79                } 
    6180        } 
    6281 
     
    7796        { 
    7897                // first lock the mutex and then change the state 
    79                 try{ 
     98                /*try{ 
    8099                        boost::mutex::scoped_lock lock(mMutex); 
    81100                        mThreadState = newState; 
    82101                }catch (boost::lock_error err) {} 
     102                */ 
     103 
     104                // lock the mutex change status and unlock it again 
     105                //pthread_mutex_lock(&mMutex); 
     106                mThreadState = newState; 
     107                //pthread_mutex_unlock(&mMutex); 
     108                 
    83109        } 
    84110 
    85111        //-------------------------------------------------------------------- 
    86         void IThread::run(IThread* mythread) 
     112        void* IThread::run(void* _mythread) 
    87113        { 
    88  
     114                // try to cast the given parameter to IThread pointer 
     115                IThread* mythread = static_cast<IThread*>(_mythread); 
     116                if (mythread == NULL) 
     117                { 
     118                        NR_Log(Log::LOG_KERNEL, Log::LL_ERROR, "IThread: not valid parameter was specified for IThread::run(void*) method"); 
     119                        return NULL; 
     120                } 
     121                 
    89122                // now loop the thread until some messages occurs 
    90123                bool run = true; 
     
    115148                        run = mythread->mThreadState != THREAD_STOP; 
    116149                } 
     150                 
    117151                // notice to stop the underlying task 
    118152                mythread->_noticeStop(); 
     153 
     154                // exit the thread 
     155                pthread_exit(NULL); 
    119156        } 
    120157 
  • nrEngine/src/Makefile

    r8 r11  
    44# Include defs for defining the variables 
    55#----------------------------------------------- 
    6 include $(TOPDIR)/Makedefs 
     6include $(TOPDIR)/Make/Makedefs 
    77 
    88#----------------------------------------------- 
     
    5050                VariadicArgument.cpp\ 
    5151                KernelEvent.cpp 
    52                          
    53 TARGET=  ../libnrEngine.so 
    5452 
     53# define used vairables 
     54TARGET=  libnrEngine.so 
    5555INCPATH += -I../include 
    5656CFLAGS += -fPIC 
    57 LIBS += -ldl -lboost_thread 
     57LIBS += -ldl -pthread 
     58 
     59# define files for installation 
     60INSTALL_DST_LIB = $(INST_LOCATION_LIB) 
     61INSTALL_SRC_LIB = $(TARGET) 
    5862 
    5963#----------------------------------------------- 
    6064# Include rules for handling the objects 
    6165#----------------------------------------------- 
    62 include $(TOPDIR)/Makerules 
     66include $(TOPDIR)/Make/Makerules 
    6367sinclude make.dep 
Note: See TracChangeset for help on using the changeset viewer.