From 01613f5cf6aa51ab47ea17d90bee1ea262c25a9e Mon Sep 17 00:00:00 2001 From: Aleksandar Fabijanic Date: Fri, 11 Apr 2008 09:27:41 +0000 Subject: [PATCH] serialized access to startImpl() functions --- Foundation/include/Poco/Thread_WIN32.h | 2 ++ Foundation/src/Thread_WIN32.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Foundation/include/Poco/Thread_WIN32.h b/Foundation/include/Poco/Thread_WIN32.h index ec9e43746..cc328c778 100644 --- a/Foundation/include/Poco/Thread_WIN32.h +++ b/Foundation/include/Poco/Thread_WIN32.h @@ -42,6 +42,7 @@ #include "Poco/Foundation.h" #include "Poco/Runnable.h" +#include "Poco/Mutex.h" #include "Poco/UnWindows.h" @@ -117,6 +118,7 @@ private: HANDLE _thread; int _prio; std::size_t _stackSize; + Mutex _mutex; static DWORD _currentKey; }; diff --git a/Foundation/src/Thread_WIN32.cpp b/Foundation/src/Thread_WIN32.cpp index 39452bc6c..f29d9eba2 100644 --- a/Foundation/src/Thread_WIN32.cpp +++ b/Foundation/src/Thread_WIN32.cpp @@ -83,6 +83,8 @@ void ThreadImpl::setPriorityImpl(int prio) void ThreadImpl::startImpl(Runnable& target) { + Mutex::ScopedLock lock(_mutex); + if (isRunningImpl()) throw SystemException("thread already running"); @@ -94,6 +96,8 @@ void ThreadImpl::startImpl(Runnable& target) void ThreadImpl::startImpl(Callback target, void* pData) { + Mutex::ScopedLock lock(_mutex); + if (isRunningImpl()) throw SystemException("thread already running");