projects
/
fms.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
version 0.1.11
[fms.git]
/
src
/
pthreadwrapper
/
thread.cpp
diff --git
a/src/pthreadwrapper/thread.cpp
b/src/pthreadwrapper/thread.cpp
index
d08cf33
..
07cb689
100644
(file)
--- a/
src/pthreadwrapper/thread.cpp
+++ b/
src/pthreadwrapper/thread.cpp
@@
-27,6
+27,9
@@
void Sleep(const long ms)
pthread_mutex_lock(&m);
\r
pthread_cond_timedwait(&c,&m,&t);
\r
pthread_mutex_unlock(&m);
\r
pthread_mutex_lock(&m);
\r
pthread_cond_timedwait(&c,&m,&t);
\r
pthread_mutex_unlock(&m);
\r
+
\r
+ pthread_cond_destroy(&c);
\r
+ pthread_mutex_destroy(&m);
\r
}
\r
\r
Thread::Thread()
\r
}
\r
\r
Thread::Thread()
\r
@@
-35,6
+38,7
@@
Thread::Thread()
m_cancelled=false;
\r
m_runnable=0;
\r
m_threadnum=0;
\r
m_cancelled=false;
\r
m_runnable=0;
\r
m_threadnum=0;
\r
+ m_threadcleaned=true;
\r
}
\r
\r
Thread::Thread(Runnable *runnable)
\r
}
\r
\r
Thread::Thread(Runnable *runnable)
\r
@@
-43,6
+47,7
@@
Thread::Thread(Runnable *runnable)
m_cancelled=false;
\r
m_runnable=runnable;
\r
m_threadnum=0;
\r
m_cancelled=false;
\r
m_runnable=runnable;
\r
m_threadnum=0;
\r
+ m_threadcleaned=true;
\r
if(m_runnable)
\r
{
\r
m_runnable->m_thread=this;
\r
if(m_runnable)
\r
{
\r
m_runnable->m_thread=this;
\r
@@
-54,6
+59,10
@@
Thread::~Thread()
{
\r
Cancel();
\r
Join();
\r
{
\r
Cancel();
\r
Join();
\r
+ if(m_threadcleaned==false)
\r
+ {
\r
+ pthread_detach(m_thread);
\r
+ }
\r
if(m_runnable)
\r
{
\r
delete m_runnable;
\r
if(m_runnable)
\r
{
\r
delete m_runnable;
\r
@@
-85,6
+94,7
@@
void Thread::Join()
if(m_running)
\r
{
\r
pthread_join(m_thread,NULL);
\r
if(m_running)
\r
{
\r
pthread_join(m_thread,NULL);
\r
+ m_threadcleaned=true;
\r
}
\r
}
\r
\r
}
\r
}
\r
\r
@@
-108,12
+118,16
@@
void Thread::Sleep(const long ms)
pthread_mutex_lock(&m);
\r
pthread_cond_timedwait(&c,&m,&t);
\r
pthread_mutex_unlock(&m);
\r
pthread_mutex_lock(&m);
\r
pthread_cond_timedwait(&c,&m,&t);
\r
pthread_mutex_unlock(&m);
\r
+
\r
+ pthread_cond_destroy(&c);
\r
+ pthread_mutex_destroy(&m);
\r
}
\r
}
\r
\r
void Thread::Start()
\r
{
\r
m_running=true;
\r
}
\r
}
\r
\r
void Thread::Start()
\r
{
\r
m_running=true;
\r
+ m_threadcleaned=false;
\r
m_threadnum=pthread_create(&m_thread,NULL,Thread::EntryPoint,this);
\r
}
\r
\r
m_threadnum=pthread_create(&m_thread,NULL,Thread::EntryPoint,this);
\r
}
\r
\r