(file) Return to Thread.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Thread.cpp between version 1.32 and 1.33

version 1.32, 2003/03/18 22:35:27 version 1.33, 2003/03/20 15:44:43
Line 184 
Line 184 
 ThreadPool::~ThreadPool(void) ThreadPool::~ThreadPool(void)
 { {
  
     try {
    _pools.remove(this);    _pools.remove(this);
    _dying++;    _dying++;
    Thread *th = 0;    Thread *th = 0;
Line 230 
Line 231 
       delete th;       delete th;
       th = _dead.remove_first();       th = _dead.remove_first();
    }    }
     }
     catch(...){}
 } }
  
 // make this static to the class // make this static to the class
Line 238 
Line 240 
 { {
    PEG_METHOD_ENTER(TRC_THREAD, "ThreadPool::_loop");    PEG_METHOD_ENTER(TRC_THREAD, "ThreadPool::_loop");
  
 #if defined(PEGASUS_DEBUG)     Tracer::trace(TRC_THREAD, Tracer::LEVEL4, "ThreadPool::_loop entered");
    char trace_buf[24];  
    snprintf(trace_buf, 23, "%d", (Uint32)pegasus_thread_self());  
    Tracer::trace(TRC_THREAD, Tracer::LEVEL4, "ThreadPool::_loop entered by %s", trace_buf);  
 #endif  
   
   
    Thread *myself = (Thread *)parm;    Thread *myself = (Thread *)parm;
    if(myself == 0)    if(myself == 0)
    {    {
Line 271 
Line 267 
    }    }
    catch(IPCException &)    catch(IPCException &)
    {    {
 #if defined(PEGASUS_DEBUG)  
       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                     "%s: IPCException Caught - EXITING", trace_buf);                      "IPCException Caught - EXITING");
 #endif  
       PEG_METHOD_EXIT();       PEG_METHOD_EXIT();
       myself->exit_self(0);       myself->exit_self(0);
    }    }
    catch(...)    catch(...)
    {    {
 #if defined(PEGASUS_DEBUG)  
       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                     "%s: Unknown  Exception Caught - EXITING", trace_buf);                      "Unknown  Exception Caught - EXITING");
 #endif  
       PEG_METHOD_EXIT();       PEG_METHOD_EXIT();
       myself->exit_self(0);       myself->exit_self(0);
    }    }
  
    if(sleep_sem == 0 || deadlock_timer == 0)    if(sleep_sem == 0 || deadlock_timer == 0)
    {    {
 #if defined(PEGASUS_DEBUG)  
       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                     "%s: NULL Semaphore  - EXITING", trace_buf);                      "NULL Semaphore  - EXITING");
 #endif  
       PEG_METHOD_EXIT();       PEG_METHOD_EXIT();
       throw NullPointer();       throw NullPointer();
    }    }
  
    while(pool->_dying < 1)    while(pool->_dying < 1)
    {    {
 #if defined(PEGASUS_DEBUG)  
       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                     "%s: ThreadPool::_loop - waiting on semaphore", trace_buf);                      "ThreadPool::_loop - waiting on semaphore");
 #endif  
       sleep_sem->wait();       sleep_sem->wait();
 #if defined(PEGASUS_DEBUG)  
       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,       Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                     "%s: ThreadPool::_loop - awakened from semaphore", trace_buf);                      "ThreadPool::_loop - awakened from semaphore");
 #endif  
       // when we awaken we reside on the running queue, not the pool queue       // when we awaken we reside on the running queue, not the pool queue
       if(pool->_dying > 0)       if(pool->_dying > 0)
          break;          break;
Line 330 
Line 316 
       }       }
       catch(IPCException &)       catch(IPCException &)
       {       {
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: IPCException Caught - EXITING", trace_buf);                         "IPCException Caught - EXITING");
 #endif  
          PEG_METHOD_EXIT();          PEG_METHOD_EXIT();
          myself->exit_self(0);          myself->exit_self(0);
       }       }
  
       if(_work == 0)       if(_work == 0)
       {       {
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: NULL work pointer - EXITING", trace_buf);                         "NULL work pointer - EXITING");
 #endif  
          PEG_METHOD_EXIT();          PEG_METHOD_EXIT();
          throw NullPointer();          throw NullPointer();
       }       }
Line 351 
Line 333 
       if(_work ==       if(_work ==
          (PEGASUS_THREAD_RETURN (PEGASUS_THREAD_CDECL *)(void *)) &_undertaker)          (PEGASUS_THREAD_RETURN (PEGASUS_THREAD_CDECL *)(void *)) &_undertaker)
       {       {
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: Calling the Undertaker", trace_buf);                         "Calling the Undertaker");
 #endif  
          _work(parm);          _work(parm);
       }       }
  
       gettimeofday(deadlock_timer, NULL);       gettimeofday(deadlock_timer, NULL);
       try       try
       {       {
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: ThreadPool::_loop - calling work routine", trace_buf);                         "ThreadPool::_loop - calling work routine");
 #endif  
          _work(parm);          _work(parm);
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: ThreadPool::_loop - returned from work routine", trace_buf);                         "ThreadPool::_loop - returned from work routine");
 #endif  
       }       }
       catch(...)       catch(...)
       {       {
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: Unknown  Exception Caught - EXITING");                         "Unknown  Exception Caught - EXITING");
 #endif  
          gettimeofday(deadlock_timer, NULL);          gettimeofday(deadlock_timer, NULL);
       }       }
       gettimeofday(deadlock_timer, NULL);       gettimeofday(deadlock_timer, NULL);
Line 391 
Line 365 
       }       }
       catch(IPCException &)       catch(IPCException &)
       {       {
 #if defined(PEGASUS_DEBUG)  
          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,          Tracer::trace(__FILE__, __LINE__, TRC_THREAD, Tracer::LEVEL4,
                        "%s: IPCException Caught - EXITING", trace_buf);                         "IPCException Caught - EXITING");
 #endif  
          PEG_METHOD_EXIT();          PEG_METHOD_EXIT();
          myself->exit_self(0);          myself->exit_self(0);
       }       }
Line 431 
Line 403 
          th = _init_thread();          th = _init_thread();
          continue;          continue;
       }       }
       pegasus_yield();  
         pegasus_sleep(1);
       th = _pool.remove_first();       th = _pool.remove_first();
    }    }
  
Line 659 
Line 632 
  
    struct timeval now, finish, remaining;    struct timeval now, finish, remaining;
    Uint32 usec;    Uint32 usec;
    gettimeofday(&now, NULL);     pegasus_gettimeofday(&now);
  
    finish.tv_sec = start->tv_sec + interval->tv_sec;    finish.tv_sec = start->tv_sec + interval->tv_sec;
    usec = start->tv_usec + interval->tv_usec;    usec = start->tv_usec + interval->tv_usec;


Legend:
Removed from v.1.32  
changed lines
  Added in v.1.33

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2