mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-13 15:36:51 +01:00
Update: Thread Termination procedure
to release all pthread allocate memories. Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
@@ -255,7 +255,10 @@ MultiTaskProcess::MultiTaskProcess()
|
||||
|
||||
MultiTaskProcess::~MultiTaskProcess()
|
||||
{
|
||||
|
||||
for (int i = 0; i < _threadCount; i++)
|
||||
{
|
||||
_threadList[i]->stop();
|
||||
}
|
||||
}
|
||||
|
||||
void MultiTaskProcess::initialize(int argc, char** argv)
|
||||
@@ -309,6 +312,7 @@ void MultiTaskProcess::threadStoped(void)
|
||||
_mutex.lock();
|
||||
_stopCount++;
|
||||
_mutex.unlock();
|
||||
|
||||
}
|
||||
|
||||
void MultiTaskProcess::attach(Thread* thread)
|
||||
|
||||
@@ -235,7 +235,7 @@ void Gateway::run(void)
|
||||
|
||||
MultiTaskProcess::run();
|
||||
|
||||
/* stop threads */
|
||||
/* stop Tasks */
|
||||
Event* ev = new Event();
|
||||
ev->setStop();
|
||||
_packetEventQue.post(ev);
|
||||
@@ -246,7 +246,7 @@ void Gateway::run(void)
|
||||
ev->setStop();
|
||||
_clientSendQue.post(ev);
|
||||
|
||||
/* wait until all threads stop */
|
||||
/* wait until all Task stop */
|
||||
MultiTaskProcess::waitStop();
|
||||
|
||||
WRITELOG("\n%s MQTT-SN Gateway stoped\n\n", currentDateTime());
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace MQTTSNGW
|
||||
/*=================================
|
||||
* Starting prompt
|
||||
==================================*/
|
||||
#define GATEWAY_VERSION " * Version: 0.9.4"
|
||||
#define GATEWAY_VERSION " * Version: 0.9.5"
|
||||
|
||||
#define PAHO_COPYRIGHT0 " * MQTT-SN Transparent Gateway"
|
||||
#define PAHO_COPYRIGHT1 " * Part of Project Paho in Eclipse"
|
||||
|
||||
@@ -514,3 +514,11 @@ void Thread::stopProcess(void)
|
||||
theMultiTaskProcess->threadStoped();
|
||||
}
|
||||
|
||||
void Thread::stop(void)
|
||||
{
|
||||
if ( _threadID )
|
||||
{
|
||||
pthread_join(_threadID, NULL);
|
||||
_threadID = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,6 +128,7 @@ public:
|
||||
virtual void initialize(int argc, char** argv);
|
||||
void stopProcess(void);
|
||||
void waitStop(void);
|
||||
void stop(void);
|
||||
private:
|
||||
static void* _run(void*);
|
||||
pthread_t _threadID;
|
||||
|
||||
Reference in New Issue
Block a user