Skip to content

Commit

Permalink
#2772 Do not exit the master thread when unloading FMU's. Cancel the …
Browse files Browse the repository at this point in the history
…worker threads in thread objects instead.

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@21774 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Aug 6, 2014
1 parent 76aa90e commit 1228cd4
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 6 deletions.
28 changes: 22 additions & 6 deletions SimulationRuntime/interactive/thread.cpp
Expand Up @@ -15,22 +15,30 @@ void delay(unsigned milliseconds)
Thread::Thread()
: thread_handle(NULL)
{
running = 0;
}

Thread::~Thread()
{
CloseHandle(thread_handle);
if (thread_handle) {
CloseHandle(thread_handle);
}
}

bool Thread::Create(THREAD_RET_TYPE (*func)(THREAD_PARAM_TYPE))
{
thread_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)*func, NULL, 0, NULL);
return thread_handle != NULL;
return running = thread_handle != NULL;
}

bool Thread::Join()
{
return WaitForSingleObject(thread_handle, INFINITE) != WAIT_FAILED;
if (running) {
bool res = WaitForSingleObject(thread_handle, INFINITE) != WAIT_FAILED;
running = 0;
return res;
}
return 0;
}


Expand Down Expand Up @@ -107,21 +115,29 @@ void delay(unsigned milliseconds)

Thread::Thread()
{
running = 0;
}

Thread::~Thread()
{
pthread_exit(NULL);
if (running) {
pthread_cancel(thread_handle);
}
}

bool Thread::Create(THREAD_RET_TYPE (*func)(THREAD_PARAM_TYPE))
{
return pthread_create(&thread_handle, NULL, func, NULL) == 0;
return running = (pthread_create(&thread_handle, NULL, func, NULL) == 0);
}

bool Thread::Join()
{
return pthread_join(thread_handle, NULL) == 0;
if (running) {
bool res = pthread_join(thread_handle, NULL) == 0;
running = 0;
return res;
}
return 0;
}


Expand Down
1 change: 1 addition & 0 deletions SimulationRuntime/interactive/thread.h
Expand Up @@ -47,6 +47,7 @@ class Thread
Thread& operator= (const Thread&);

private:
int running;
THREAD_HANDLE thread_handle;
};

Expand Down

0 comments on commit 1228cd4

Please sign in to comment.