Inheritance diagram for AioSignalHandlerThread:
Public Member Functions | |
AioSignalHandlerThread (AioSignalScheduler &schedulerInit) | |
virtual void | run () |
virtual void | start () |
Spawns the OS thread. | |
void | join () |
Waits for the OS thread to terminate. | |
bool | isStarted () const |
| |
bool | isStopped () const |
| |
boost::thread & | getBoostThread () |
Accesses the underlying boost::thread, e.g. | |
std::string | getName () |
void | setName (std::string const &s) |
Protected Member Functions | |
void | initAndRun () |
virtual void | beforeRun () |
virtual void | afterRun () |
Protected Attributes | |
boost::thread * | pBoostThread |
bool | bRunning |
std::string | name |
Private Attributes | |
AioSignalScheduler & | scheduler |
Definition at line 38 of file AioSignalScheduler.cpp.
AioSignalHandlerThread::AioSignalHandlerThread | ( | AioSignalScheduler & | schedulerInit | ) | [inline] |
Definition at line 42 of file AioSignalScheduler.cpp.
00043 : scheduler(schedulerInit) 00044 { 00045 }
void AioSignalHandlerThread::run | ( | ) | [virtual] |
Implements Thread.
Definition at line 156 of file AioSignalScheduler.cpp.
References AioSignalScheduler::quit, and scheduler.
00157 { 00158 int rc; 00159 00160 // unblock signal in this thread only 00161 sigset_t mask; 00162 sigemptyset(&mask); 00163 sigaddset(&mask,SIGRTMIN); 00164 rc = pthread_sigmask(SIG_UNBLOCK,&mask,NULL); 00165 assert(!rc); 00166 00167 // NOTE: had to boost priority of this thread to get signal handler 00168 // to run frequently. 00169 #ifdef sun 00170 int policy; 00171 sched_param param; 00172 rc = pthread_getschedparam(pthread_self(),&policy,¶m); 00173 assert(!rc); 00174 param.sched_priority++; 00175 rc = pthread_setschedparam(pthread_self(),SCHED_RR,¶m); 00176 assert(!rc); 00177 #endif 00178 00179 // NOTE: using a condition variable causes the signal handler 00180 // to run too infrequently. Try again after switching threading models. 00181 while (!scheduler.quit) { 00182 sleep(1); 00183 } 00184 }
void Thread::initAndRun | ( | ) | [protected, inherited] |
Definition at line 66 of file Thread.cpp.
References Thread::afterRun(), Thread::beforeRun(), and Thread::run().
Referenced by Thread::start().
void Thread::beforeRun | ( | ) | [protected, virtual, inherited] |
Definition at line 73 of file Thread.cpp.
References Thread::bRunning.
Referenced by Thread::initAndRun().
00074 { 00075 bRunning = true; 00076 }
void Thread::afterRun | ( | ) | [protected, virtual, inherited] |
Definition at line 78 of file Thread.cpp.
References Thread::bRunning.
Referenced by Thread::initAndRun().
00079 { 00080 bRunning = false; 00081 }
void Thread::start | ( | ) | [virtual, inherited] |
Spawns the OS thread.
Definition at line 50 of file Thread.cpp.
References Thread::initAndRun(), and Thread::pBoostThread.
Referenced by AioLinuxScheduler::AioLinuxScheduler(), AioPollingScheduler::AioPollingScheduler(), StatsTimer::start(), ResourceTest::testConcurrency(), and LocalConditionTest::testNotifyAll().
00051 { 00052 pBoostThread = new boost::thread( 00053 boost::bind(&Thread::initAndRun,this)); 00054 }
void Thread::join | ( | ) | [inherited] |
Waits for the OS thread to terminate.
Definition at line 56 of file Thread.cpp.
References Thread::pBoostThread.
Referenced by CheckpointThread::closeImpl(), TimerThread::stop(), AioPollingScheduler::stop(), AioLinuxScheduler::stop(), ResourceTest::testConcurrency(), and LocalConditionTest::testNotifyAll().
00057 { 00058 assert(pBoostThread); 00059 boost::thread t; 00060 assert(*pBoostThread != t); 00061 pBoostThread->join(); 00062 delete pBoostThread; 00063 pBoostThread = NULL; 00064 }
bool Thread::isStarted | ( | ) | const [inline, inherited] |
Reimplemented in AioLinuxScheduler.
Definition at line 71 of file Thread.h.
Referenced by CheckpointThread::closeImpl(), CacheImpl< PageT, VictimPolicyT >::closeImpl(), AioLinuxScheduler::isStarted(), and TimerThread::stop().
00072 { 00073 return pBoostThread ? true : false; 00074 }
bool Thread::isStopped | ( | ) | const [inline, inherited] |
Definition at line 79 of file Thread.h.
00080 { 00081 return !isStarted(); 00082 }
boost::thread& Thread::getBoostThread | ( | ) | [inline, inherited] |
Accesses the underlying boost::thread, e.g.
for use in a boost::thread_group. This thread must already be started.
Definition at line 90 of file Thread.h.
00091 { 00092 assert(isStarted()); 00093 return *pBoostThread; 00094 }
std::string Thread::getName | ( | ) | [inline, inherited] |
void Thread::setName | ( | std::string const & | s | ) | [inline, inherited] |
boost::thread* Thread::pBoostThread [protected, inherited] |
Definition at line 44 of file Thread.h.
Referenced by Thread::join(), Thread::start(), Thread::Thread(), and Thread::~Thread().
bool Thread::bRunning [protected, inherited] |
Definition at line 45 of file Thread.h.
Referenced by Thread::afterRun(), Thread::beforeRun(), Thread::Thread(), and Thread::~Thread().
std::string Thread::name [protected, inherited] |