some debugging code.

This commit is contained in:
crs 2001-10-14 19:16:54 +00:00
parent b3291bc2b5
commit 9435639545
3 changed files with 18 additions and 2 deletions

View File

@ -3,6 +3,7 @@
#include "XThread.h" #include "XThread.h"
#include "CLock.h" #include "CLock.h"
#include "CStopwatch.h" #include "CStopwatch.h"
#include "CLog.h"
// //
// CThreadPtr // CThreadPtr
@ -75,6 +76,8 @@ void CThread::sleep(double timeout)
void CThread::exit(void* result) void CThread::exit(void* result)
{ {
CThreadPtr currentRep(CThreadRep::getCurrentThreadRep());
log((CLOG_DEBUG "throw exit on thread %p", currentRep.operator->()));
throw XThreadExit(result); throw XThreadExit(result);
} }

View File

@ -3,6 +3,7 @@
#include "CMutex.h" #include "CMutex.h"
#include "CLock.h" #include "CLock.h"
#include "XThread.h" #include "XThread.h"
#include "CLog.h"
#include "IJob.h" #include "IJob.h"
#include <assert.h> #include <assert.h>
@ -229,14 +230,19 @@ void CThreadRep::doThreadFunc()
catch (XThreadCancel&) { catch (XThreadCancel&) {
// client called cancel() // client called cancel()
log((CLOG_DEBUG "caught cancel on thread %p", this));
} }
catch (XThreadExit& e) { catch (XThreadExit& e) {
// client called exit() // client called exit()
result = e.m_result; result = e.m_result;
log((CLOG_DEBUG "caught exit on thread %p", this));
} }
catch (...) {
log((CLOG_DEBUG "caught exit on thread %p", this));
// note -- don't catch (...) to avoid masking bugs // note -- don't catch (...) to avoid masking bugs
throw;
}
// done with job // done with job
delete m_job; delete m_job;
@ -286,6 +292,7 @@ void CThreadRep::cancel()
m_cancel = true; m_cancel = true;
// break out of system calls // break out of system calls
log((CLOG_DEBUG "cancel thread %p", this));
pthread_kill(m_thread, SIGALRM); pthread_kill(m_thread, SIGALRM);
} }
} }
@ -304,6 +311,7 @@ void CThreadRep::testCancel()
} }
// start cancel // start cancel
log((CLOG_DEBUG "throw cancel on thread %p", this));
throw XThreadCancel(); throw XThreadCancel();
} }
@ -401,6 +409,7 @@ void CThreadRep::sleep(double timeout)
void CThreadRep::cancel() void CThreadRep::cancel()
{ {
log((CLOG_DEBUG "cancel thread %p", this));
SetEvent(m_cancel); SetEvent(m_cancel);
} }
@ -423,6 +432,7 @@ void CThreadRep::testCancel()
} }
// start cancel // start cancel
log((CLOG_DEBUG "throw cancel on thread %p", this));
throw XThreadCancel(); throw XThreadCancel();
} }

View File

@ -18,7 +18,10 @@ CTimerThread::CTimerThread(double timeout) : m_timeout(timeout)
CTimerThread::~CTimerThread() CTimerThread::~CTimerThread()
{ {
log((CLOG_DEBUG "cancelling timeout"));
m_timingThread->cancel(); m_timingThread->cancel();
m_timingThread->wait();
log((CLOG_DEBUG "cancelled timeout"));
delete m_timingThread; delete m_timingThread;
delete m_callingThread; delete m_callingThread;
} }